comparison src/share/vm/services/memoryService.cpp @ 11039:71963b3f802a

8013590: NPG: Add a memory pool MXBean for Metaspace Reviewed-by: jmasa, mgerdin
author ehelin
date Wed, 26 Jun 2013 16:58:37 +0200
parents 42e370795a39
children 7944aba7ba41
comparison
equal deleted inserted replaced
11038:f99cd6e20ab1 11039:71963b3f802a
33 #include "memory/generationSpec.hpp" 33 #include "memory/generationSpec.hpp"
34 #include "memory/heap.hpp" 34 #include "memory/heap.hpp"
35 #include "memory/memRegion.hpp" 35 #include "memory/memRegion.hpp"
36 #include "memory/tenuredGeneration.hpp" 36 #include "memory/tenuredGeneration.hpp"
37 #include "oops/oop.inline.hpp" 37 #include "oops/oop.inline.hpp"
38 #include "runtime/globals.hpp"
38 #include "runtime/javaCalls.hpp" 39 #include "runtime/javaCalls.hpp"
39 #include "services/classLoadingService.hpp" 40 #include "services/classLoadingService.hpp"
40 #include "services/lowMemoryDetector.hpp" 41 #include "services/lowMemoryDetector.hpp"
41 #include "services/management.hpp" 42 #include "services/management.hpp"
42 #include "services/memoryManager.hpp" 43 #include "services/memoryManager.hpp"
58 GrowableArray<MemoryPool*>* MemoryService::_pools_list = 59 GrowableArray<MemoryPool*>* MemoryService::_pools_list =
59 new (ResourceObj::C_HEAP, mtInternal) GrowableArray<MemoryPool*>(init_pools_list_size, true); 60 new (ResourceObj::C_HEAP, mtInternal) GrowableArray<MemoryPool*>(init_pools_list_size, true);
60 GrowableArray<MemoryManager*>* MemoryService::_managers_list = 61 GrowableArray<MemoryManager*>* MemoryService::_managers_list =
61 new (ResourceObj::C_HEAP, mtInternal) GrowableArray<MemoryManager*>(init_managers_list_size, true); 62 new (ResourceObj::C_HEAP, mtInternal) GrowableArray<MemoryManager*>(init_managers_list_size, true);
62 63
63 GCMemoryManager* MemoryService::_minor_gc_manager = NULL; 64 GCMemoryManager* MemoryService::_minor_gc_manager = NULL;
64 GCMemoryManager* MemoryService::_major_gc_manager = NULL; 65 GCMemoryManager* MemoryService::_major_gc_manager = NULL;
65 MemoryPool* MemoryService::_code_heap_pool = NULL; 66 MemoryPool* MemoryService::_code_heap_pool = NULL;
67 MemoryPool* MemoryService::_metaspace_pool = NULL;
68 MemoryPool* MemoryService::_compressed_class_pool = NULL;
66 69
67 class GcThreadCountClosure: public ThreadClosure { 70 class GcThreadCountClosure: public ThreadClosure {
68 private: 71 private:
69 int _count; 72 int _count;
70 public: 73 public:
394 true /* support_usage_threshold */); 397 true /* support_usage_threshold */);
395 MemoryManager* mgr = MemoryManager::get_code_cache_memory_manager(); 398 MemoryManager* mgr = MemoryManager::get_code_cache_memory_manager();
396 mgr->add_pool(_code_heap_pool); 399 mgr->add_pool(_code_heap_pool);
397 400
398 _pools_list->append(_code_heap_pool); 401 _pools_list->append(_code_heap_pool);
402 _managers_list->append(mgr);
403 }
404
405 void MemoryService::add_metaspace_memory_pools() {
406 MemoryManager* mgr = MemoryManager::get_metaspace_memory_manager();
407
408 _metaspace_pool = new MetaspacePool();
409 mgr->add_pool(_metaspace_pool);
410 _pools_list->append(_metaspace_pool);
411
412 if (UseCompressedKlassPointers) {
413 _compressed_class_pool = new CompressedKlassSpacePool();
414 mgr->add_pool(_compressed_class_pool);
415 _pools_list->append(_compressed_class_pool);
416 }
417
399 _managers_list->append(mgr); 418 _managers_list->append(mgr);
400 } 419 }
401 420
402 MemoryManager* MemoryService::get_memory_manager(instanceHandle mh) { 421 MemoryManager* MemoryService::get_memory_manager(instanceHandle mh) {
403 for (int i = 0; i < _managers_list->length(); i++) { 422 for (int i = 0; i < _managers_list->length(); i++) {