これは java.lang.management.MemoryManagerMXBean 及び java.lang.management.MemoryPoolMXBean を実現するための処理. これらの Platform MXBean は MemoryManager オブジェクト及び MemoryPool オブジェクトによって実現されている.
なお, これらのオブジェクトは HotSpot の初期化時に生成される.
また, 管理対象には Java ヒープと CodeCache がある. Java ヒープについては, 使用している GC アルゴリズムに応じた MemoryManager オブジェクト及び MemoryPool オブジェクトが用いられる.
使用される MemoryManager オブジェクト及び MemoryPool オブジェクトの一覧は以下の通り.
ParallelScavengeHeap の場合:
G1CollectedHeap の場合:
GenCollectedHeap の場合:
universe_post_init()
-> MemoryService::set_universe_heap()
使用する GC アルゴリズムに応じて処理が分かれる.
* GenCollectedHeap の場合:
-> MemoryService::add_gen_collected_heap_info()
(1) Minor GC 用の MemoryManager については, 以下の2択で生成
* DefNew の場合
-> MemoryManager::get_copy_memory_manager()
* ParNew の場合
-> MemoryManager::get_parnew_memory_manager()
(2) Major GC 用の MemoryManager については, 以下の2択で生成
* MSC の場合
-> MemoryManager::get_msc_memory_manager()
* CMS の場合
-> MemoryManager::get_cms_memory_manager()
(3) New/Old 領域用の MemoryPool は以下のように生成
-> MemoryService::add_generation_memory_pool()
* Eden 領域用の MemoryPool
-> MemoryService::add_space()
(DefNew の場合も ParNew の場合も呼び出す関数は同じ)
* Survivor 領域用の MemoryPool
-> MemoryService::add_survivor_spaces()
(DefNew の場合も ParNew の場合も呼び出す関数は同じ)
* Old 領域用の MemoryPool (MSC の場合)
-> MemoryService::add_gen()
* Old 領域用の MemoryPool (CMS の場合
-> MemoryService::add_cms_space()
(4) Perm 領域用の MemoryPool は以下のように生成
* MSC の場合
-> MemoryService::add_compact_perm_gen_memory_pool()
* CMS の場合
-> MemoryService::add_cms_perm_gen_memory_pool()
* ParallelScavengeHeap の場合:
-> MemoryService::add_parallel_scavenge_heap_info()
-> MemoryManager::get_psScavenge_memory_manager()
-> MemoryManager::get_psMarkSweep_memory_manager()
-> MemoryService::add_psYoung_memory_pool()
-> MemoryService::add_psOld_memory_pool()
-> MemoryService::add_psPerm_memory_pool()
* G1CollectedHeap の場合:
-> MemoryService::add_g1_heap_info()
-> MemoryManager::get_g1YoungGen_memory_manager()
-> MemoryManager::get_g1OldGen_memory_manager()
-> MemoryService::add_g1YoungGen_memory_pool()
-> MemoryService::add_g1YoungGen_memory_pool()
-> MemoryService::add_g1OldGen_memory_pool()
-> MemoryService::add_g1PermGen_memory_pool()
CodeCache::initialize() -> MemoryService::add_code_heap_memory_pool() -> MemoryManager::get_code_cache_memory_manager()
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.