Top


定義場所(file name)

hotspot/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp

名前(function name)

void VM_ParallelGCSystemGC::doit() {

本体部(body)

  {- -------------------------------------------
  (1) (DTrace のフック点) (JVMTI のフック点)
      (See: SvcGCMarker)
      ---------------------------------------- -}

      SvcGCMarker sgcm(SvcGCMarker::FULL);

  {- -------------------------------------------
  (1) (変数宣言など)
      ---------------------------------------- -}

      ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
      assert(heap->kind() == CollectedHeap::ParallelScavengeHeap,
        "must be a ParallelScavengeHeap");

      GCCauseSetter gccs(heap, _gc_cause);

  {- -------------------------------------------
  (1) 呼び出し元が GC_locker の場合は, ParallelScavengeHeap::invoke_scavenge() を呼び出す.
      そうでなければ, ParallelScavengeHeap::invoke_full_gc() を呼び出す.
      ---------------------------------------- -}

      if (_gc_cause == GCCause::_gc_locker
          DEBUG_ONLY(|| _gc_cause == GCCause::_scavenge_alot)) {
        // If (and only if) the scavenge fails, this will invoke a full gc.
        heap->invoke_scavenge();
      } else {
        heap->invoke_full_gc(false);
      }
    }

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