Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/g1/g1RemSet.cpp

名前(function name)

void G1RemSet::scanRS(OopsInHeapRegionClosure* oc, int worker_i) {

本体部(body)

  {- -------------------------------------------
  (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.