これは 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.