8025996: Track metaspace usage when metaspace is expanded
Reviewed-by: coleenp, ehelin
--- a/hotspot/src/share/vm/memory/metaspace.cpp Mon Oct 07 15:51:08 2013 +0200
+++ b/hotspot/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/hotspot/src/share/vm/services/memoryService.hpp Mon Oct 07 15:51:08 2013 +0200
+++ b/hotspot/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,