メモリ確保以外の処理パスで発生する GC 処理 (java.lang.System.gc() 等)では, 最終的に CollectedHeap::collect() が呼び出される.
ParallelScavengeHeap は CollectedHeap::collect() をオーバーライドしているので, 実際に呼び出されるのは ParallelScavengeHeap::collect() になる. この中で VM_ParallelGCSystemGC によって Minor GC か Major GC のどちらかが実行される.
ParallelScavengeHeap::collect() -> VMThread::execute() -> (略) (See: here for details) -> VM_ParallelGCSystemGC::doit() * 呼び出し元が GC_locker の場合: -> ParallelScavengeHeap::invoke_scavenge() -> PSScavenge::invoke() -> (See: here for details) * そうでない場合: -> ParallelScavengeHeap::invoke_full_gc() -> (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.