hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp
void G1RemSet::scanRS(OopsInHeapRegionClosure* oc, int worker_i) {
{- -------------------------------------------
(1) 処理の開始時間を記録しておく.
---------------------------------------- -}
double rs_time_start = os::elapsedTime();
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
HeapRegion *startRegion = calculateStartRegion(worker_i);
{- -------------------------------------------
(1) Collection Set 外から Collection Set 内を指しているポインタを処理する.
---------------------------------------- -}
ScanRSClosure scanRScl(oc, worker_i);
_g1->collection_set_iterate_from(startRegion, &scanRScl);
scanRScl.set_try_claimed();
_g1->collection_set_iterate_from(startRegion, &scanRScl);
{- -------------------------------------------
(1) 処理に掛かった時間を計算しておく
---------------------------------------- -}
double scan_rs_time_sec = os::elapsedTime() - rs_time_start;
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert( _cards_scanned != NULL, "invariant" );
{- -------------------------------------------
(1)
---------------------------------------- -}
_cards_scanned[worker_i] = scanRScl.cards_done();
{- -------------------------------------------
(1) 処理に掛かった時間を G1CollectorPolicy オブジェクトに記録.
---------------------------------------- -}
_g1p->record_scan_rs_time(worker_i, scan_rs_time_sec * 1000.0);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.