Up Top

Memory allocation (& GC 処理) : メモリ確保以外の処理パスで発生する GC 処理 (java.lang.System.gc() 等) : GenCollectedHeap の場合 : CMS ではない場合


概要(Summary)

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).

処理の流れ (概要)(Execution Flows : Summary)

(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)

処理の流れ (詳細)(Execution Flows : Details)

GenCollectedHeap::collect(GCCause::Cause cause, int max_level)

See: here for details

GenCollectedHeap::collect_locked()

See: here for details

VM_GenCollectFull::doit()

See: here for details

GenCollectedHeap::do_full_collection()

See: here for details


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.