From 36b66e13c8eca8e460bfd6d900f139408aff9d43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Sj=C3=B6len?= Date: Tue, 18 Nov 2025 13:05:57 +0000 Subject: [PATCH] 8371778: Make MallocMemorySummary::_snapshot a DeferredStatic Reviewed-by: phubner, azafari --- src/hotspot/share/nmt/mallocTracker.cpp | 4 ++-- src/hotspot/share/nmt/mallocTracker.hpp | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) 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