diff --git a/src/hotspot/share/services/nmtUsage.cpp b/src/hotspot/share/services/nmtUsage.cpp index 5899abc01cc..03229ce4171 100644 --- a/src/hotspot/share/services/nmtUsage.cpp +++ b/src/hotspot/share/services/nmtUsage.cpp @@ -115,7 +115,7 @@ size_t NMTUsage::total_reserved() const { } size_t NMTUsage::total_committed() const { - return _malloc_total + _vm_total.reserved; + return _malloc_total + _vm_total.committed; } size_t NMTUsage::reserved(MEMFLAGS flag) const { diff --git a/test/jdk/jdk/jfr/event/runtime/TestNativeMemoryUsageEvents.java b/test/jdk/jdk/jfr/event/runtime/TestNativeMemoryUsageEvents.java index 6495addbaec..bff7958fd3f 100644 --- a/test/jdk/jdk/jfr/event/runtime/TestNativeMemoryUsageEvents.java +++ b/test/jdk/jdk/jfr/event/runtime/TestNativeMemoryUsageEvents.java @@ -147,6 +147,17 @@ public class TestNativeMemoryUsageEvents { assertGreaterThan(lastSample, firstSample, "heap should have grown and NMT should show that"); } + private static void verifyTotalDiffBetweenReservedAndCommitted(List events) throws Exception { + RecordedEvent firstTotal = events.stream() + .filter(e -> e.getEventType().getName().equals(UsageTotalEvent)) + .findFirst().orElse(null); + + // Verify that the first total event has more reserved than committed memory. + long firstReserved = firstTotal.getLong("reserved"); + long firstCommitted = firstTotal.getLong("committed"); + assertGreaterThan(firstReserved, firstCommitted, "initial reserved should be greater than initial committed"); + } + private static void verifyNoUsageEvents(List events) throws Exception { Events.hasNotEvent(events, UsageEvent); Events.hasNotEvent(events, UsageTotalEvent); @@ -167,6 +178,7 @@ public class TestNativeMemoryUsageEvents { if (nmtEnabled) { verifyExpectedEventTypes(events); verifyHeapGrowth(events); + verifyTotalDiffBetweenReservedAndCommitted(events); } else { verifyNoUsageEvents(events); }