changeset 5429:a6414751d537

8025996: Track metaspace usage when metaspace is expanded Reviewed-by: coleenp, ehelin
author stefank
date Mon, 07 Oct 2013 15:51:17 +0200
parents 85c1ca43713f
children aa6f2ea19d8f 9c8289162268
files src/share/vm/memory/metaspace.cpp src/share/vm/services/memoryService.hpp
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/memory/metaspace.cpp	Mon Oct 07 15:51:08 2013 +0200
+++ b/src/share/vm/memory/metaspace.cpp	Mon Oct 07 15:51:17 2013 +0200
@@ -43,6 +43,7 @@
 #include "runtime/mutex.hpp"
 #include "runtime/orderAccess.hpp"
 #include "services/memTracker.hpp"
+#include "services/memoryService.hpp"
 #include "utilities/copy.hpp"
 #include "utilities/debug.hpp"
 
@@ -735,6 +736,9 @@
   // and allocates from that chunk.
   MetaWord* grow_and_allocate(size_t word_size);
 
+  // Notify memory usage to MemoryService.
+  void track_metaspace_memory_usage();
+
   // debugging support.
 
   void dump(outputStream* const out) const;
@@ -2060,6 +2064,15 @@
   return chunk_word_size;
 }
 
+void SpaceManager::track_metaspace_memory_usage() {
+  if (is_init_completed()) {
+    if (is_class()) {
+      MemoryService::track_compressed_class_memory_usage();
+    }
+    MemoryService::track_metaspace_memory_usage();
+  }
+}
+
 MetaWord* SpaceManager::grow_and_allocate(size_t word_size) {
   assert(vs_list()->current_virtual_space() != NULL,
          "Should have been set");
@@ -2099,6 +2112,9 @@
     mem = next->allocate(word_size);
   }
 
+  // Track metaspace memory usage statistic.
+  track_metaspace_memory_usage();
+
   return mem;
 }
 
--- a/src/share/vm/services/memoryService.hpp	Mon Oct 07 15:51:08 2013 +0200
+++ b/src/share/vm/services/memoryService.hpp	Mon Oct 07 15:51:17 2013 +0200
@@ -148,6 +148,12 @@
   static void track_code_cache_memory_usage() {
     track_memory_pool_usage(_code_heap_pool);
   }
+  static void track_metaspace_memory_usage() {
+    track_memory_pool_usage(_metaspace_pool);
+  }
+  static void track_compressed_class_memory_usage() {
+    track_memory_pool_usage(_compressed_class_pool);
+  }
   static void track_memory_pool_usage(MemoryPool* pool);
 
   static void gc_begin(bool fullGC, bool recordGCBeginTime,