CMS ではない場合(※), メモリ確保以外の処理パスで発生する GC 処理 (java.lang.System.gc() 等)では, GenCollectedHeap::collect(GCCause::Cause cause, int max_level) で処理が行われる.
この中では, VM_GenCollectFull クラスによって最終的に GenCollectedHeap::do_collection() が呼び出され, Minor GC または Major GC が実行される.
(※) より正確な条件は GenCollectedHeap::should_do_concurrent_full_gc() 参照 (See: here for details).
(See: here for details) -> GenCollectedHeap::collect(GCCause::Cause cause, int max_level) -> GenCollectedHeap::collect_locked() -> VMThread::execute() -> (略) (See: here for details) -> VM_GenCollectFull::doit() -> GenCollectedHeap::do_full_collection() -> GenCollectedHeap::do_collection() -> (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.