hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
void PSRefProcTaskExecutor::execute(EnqueueTask& task)
{
{- -------------------------------------------
(1) GCTaskQueue::create() で GCTaskQueue を作り,
そこに ParallelGCThreads 個分だけ PSRefEnqueueTaskProxy をつめる.
---------------------------------------- -}
GCTaskQueue* q = GCTaskQueue::create();
for(uint i=0; i<ParallelGCThreads; i++) {
q->enqueue(new PSRefEnqueueTaskProxy(task, i));
}
{- -------------------------------------------
(1) GCTaskManager::execute_and_wait() で, GCTaskThread 達に実行させる.
---------------------------------------- -}
ParallelScavengeHeap::gc_task_manager()->execute_and_wait(q);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.