hotspot/src/share/vm/services/memoryService.cpp
// GC manager type depends on the type of Generation. Depending on the space
// availablity and vm options the gc uses major gc manager or minor gc
// manager or both. The type of gc manager depends on the generation kind.
// For DefNew, ParNew and ASParNew generation doing scavenge gc uses minor
// gc manager (so _fullGC is set to false ) and for other generation kinds
// doing mark-sweep-compact uses major gc manager (so _fullGC is set
// to true).
TraceMemoryManagerStats::TraceMemoryManagerStats(Generation::Name kind, GCCause::Cause cause) {
{- -------------------------------------------
(1) TraceMemoryManagerStats::initialize() を呼び出すだけ.
(呼び出す際の第一引数(以下の _fullGC)は, 引数の kind の値に応じて決まる)
---------------------------------------- -}
switch (kind) {
case Generation::DefNew:
#ifndef SERIALGC
case Generation::ParNew:
case Generation::ASParNew:
#endif // SERIALGC
_fullGC=false;
break;
case Generation::MarkSweepCompact:
#ifndef SERIALGC
case Generation::ConcurrentMarkSweep:
case Generation::ASConcurrentMarkSweep:
#endif // SERIALGC
_fullGC=true;
break;
default:
assert(false, "Unrecognized gc generation kind.");
}
// this has to be called in a stop the world pause and represent
// an entire gc pause, start to finish:
initialize(_fullGC, cause,true, true, true, true, true, true, true);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.