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++) { |