hotspot/src/share/vm/memory/genCollectedHeap.cpp
void GenCollectedHeap::collect_mostly_concurrent(GCCause::Cause cause) {
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert(!Heap_lock->owned_by_self(), "Should not own Heap_lock");
{- -------------------------------------------
(1) (変数宣言など)
(なお, これらの値は Heap_lock のロックを取った状態で読み取る)
---------------------------------------- -}
MutexLocker ml(Heap_lock);
// Read the GC counts while holding the Heap_lock
unsigned int full_gc_count_before = total_full_collections();
unsigned int gc_count_before = total_collections();
{- -------------------------------------------
(1) VM_GenCollectFullConcurrent による GC を行う.
---------------------------------------- -}
{
MutexUnlocker mu(Heap_lock);
VM_GenCollectFullConcurrent op(gc_count_before, full_gc_count_before, cause);
VMThread::execute(&op);
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.