diff --git a/src/hotspot/share/nmt/mallocTracker.cpp b/src/hotspot/share/nmt/mallocTracker.cpp index a61a27db25d..2cf5034c0bf 100644 --- a/src/hotspot/share/nmt/mallocTracker.cpp +++ b/src/hotspot/share/nmt/mallocTracker.cpp @@ -45,7 +45,7 @@ #include "utilities/ostream.hpp" #include "utilities/vmError.hpp" -MallocMemorySnapshot MallocMemorySummary::_snapshot; +DeferredStatic MallocMemorySummary::_snapshot; void MemoryCounter::update_peak(size_t size, size_t cnt) { size_t peak_sz = peak_size(); @@ -101,7 +101,7 @@ void MallocMemorySnapshot::make_adjustment() { } void MallocMemorySummary::initialize() { - // Uses placement new operator to initialize static area. + _snapshot.initialize(); MallocLimitHandler::initialize(MallocLimit); } diff --git a/src/hotspot/share/nmt/mallocTracker.hpp b/src/hotspot/share/nmt/mallocTracker.hpp index 0ead41f2411..fc03faf7212 100644 --- a/src/hotspot/share/nmt/mallocTracker.hpp +++ b/src/hotspot/share/nmt/mallocTracker.hpp @@ -30,6 +30,7 @@ #include "nmt/memTag.hpp" #include "nmt/nmtCommon.hpp" #include "runtime/atomicAccess.hpp" +#include "utilities/deferredStatic.hpp" #include "utilities/nativeCallStack.hpp" class outputStream; @@ -204,7 +205,7 @@ class MallocMemorySnapshot { class MallocMemorySummary : AllStatic { private: // Reserve memory for placement of MallocMemorySnapshot object - static MallocMemorySnapshot _snapshot; + static DeferredStatic _snapshot; static bool _have_limits; // Called when a total limit break was detected. @@ -251,7 +252,7 @@ class MallocMemorySummary : AllStatic { } static MallocMemorySnapshot* as_snapshot() { - return &_snapshot; + return _snapshot.get(); } // MallocLimit: returns true if allocating s bytes on f would trigger