Up Top

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


概要(Summary)

メモリ確保以外の処理パスで発生する GC 処理 (java.lang.System.gc() 等)では, 最終的に CollectedHeap::collect() が呼び出される.

ParallelScavengeHeap は CollectedHeap::collect() をオーバーライドしているので, 実際に呼び出されるのは ParallelScavengeHeap::collect() になる. この中で VM_ParallelGCSystemGC によって Minor GC か Major GC のどちらかが実行される.

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

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)

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

ParallelScavengeHeap::collect()

See: here for details

VM_ParallelGCSystemGC::doit()

See: here for details

ParallelScavengeHeap::invoke_scavenge()

See: here for details


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