Skip to content

Instantly share code, notes, and snippets.

@torazuka
Created November 10, 2013 17:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save torazuka/7401109 to your computer and use it in GitHub Desktop.
Save torazuka/7401109 to your computer and use it in GitHub Desktop.
The class inheritance tree of memory directory in JVM HotSpot
blockdiag {
default_fontsize = 14;
ResourceObj -> AllocatedObj;
AllocStats, ReallocMark -> StackObj;
Chunk, Arena -> CHeapObj;
SharedHeap [color = "#FFFFFF"];
GenClosure -> StackObj;
GenCollectedHeap -> SharedHeap -> CollectedHeap -> CHeapObj;
group genCollectedHeap {
label = "genCollectedHeap";
color = "#FFFFFF";
GenClosure;
GenCollectedHeap;
}
WaterMark [color = "#FFFFFF"];
WaterMark -> _ValueObj;
CodeHeap -> CHeapObj;
HeapBlock -> _ValueObj;
group heap {
label = "heap";
color = "#FFFFFF";
FreeBlock -> HeapBlock;
CodeHeap;
}
ResourceMark -> StackObj;
ResourceArea -> Arena;
DeoptResourceMark -> CHeapObj;
group resourceArea {
label = "resourceArea";
color = "#FFFFFF";
ResourceMark, ResourceArea, DeoptResourceMark;
}
ObjectClosure -> Closure -> StackObj;
ClassifyObjectClosure, ClearAllocCountClosure, BoolObjectClosure -> ObjectClosure;
group classify {
label = "classify";
color = "#FFFFFF";
ClassifyInstanceKlassClosure -> ClassifyObjectClosure;
ClearAllocCountClosure;
}
ObjectClosure, CodeBlobClosure -> Closure;
UpwardsObjectClosure -> BoolObjectClosure;
BlkClosure, SpaceClosure, CompactibleSpaceClosure, MonitorClosure, YieldClosure, SymbolClosure, RememberKlassesChecker -> StackObj;
SerializeOopClosure -> OopClosure;
group iterator {
label = "iterator";
color = "#FFFFFF";
OopClosure -> Closure;
CodeBlobToOopClosure -> MarkingCodeBlobClosure -> CodeBlobClosure;
BoolObjectClosure, ObjectToOopClosure, ObjectClosureCareful -> ObjectClosure;
BlkClosureCareful -> BlkClosure;
SpaceClosure, CompactibleSpaceClosure, MonitorClosure, YieldClosure, SymbolClosure, RememberKlassesChecker;
SerializeOopClosure;
}
KeepAliveClosure -> OopClosure -> Closure;
IsAliveClosure -> BoolObjectClosure;
EvacuateFollowersClosure, FastEvacuateFollowersClosure -> VoidClosure -> StackObj;
group defNewGeneration {
label = "defNewGeneration";
color = "#FFFFFF";
FastKeepAliveClosure -> KeepAliveClosure;
IsAliveClosure;
EvacuateFollowersClosure, FastEvacuateFollowersClosure;
}
OopsInGenClosure -> OopClosure;
FilteringClosure, ScanWeakRefClosure, VerifyOopClosure -> OopClosure;
group genOopClosures {
label = "genOopClosures";
color = "#FFFFFF";
ScanClosure, FastScanClosure -> OopsInGenClosure;
FilteringClosure, ScanWeakRefClosure, VerifyOopClosure;
}
CompactingPermGen -> PermGen -> CHeapObj;
GenerationSpec -> CHeapObj;
ParmanentGenerationSpec -> CHeapObj;
group generationSpec {
label = "generationSpec";
color = "#FFFFFF";
GenerationSpec, ParmanentGenerationSpec;
}
DefNewGeneration, CardGeneration -> Generation -> CHeapObj;
CompactingPermGenGen -> OneContigSpaceCardGeneration -> CardGeneration;
ScratchBlock;
group generation {
label = "generation";
color = "#FFFFFF";
ScratchBlock, Generation, OneContigSpaceCardGeneration;
}
TenuredGeneration [color = "#FFFFFF"];
TenuredGeneration -> OneContigSpaceCardGeneration;
CompactPoint -> StackObj;
DirtyCardToOopClosure -> MemRegionClosureRO;
Space -> CHeapObj;
TenuredSpace, ContigPermSpace -> OffsetTableContigSpace;
SpaceMemRegionOopsIterClosure -> OopClosure;
group space {
label = "space";
color = "#FFFFFF";
CompactPoint;
ContiguousSpaceDCTOC -> Filtering_DCTOC -> DirtyCardToOopClosure;
ConcEdenSpace -> EdenSpace;
EdenSpace, OffsetTableContigSpace -> ContiguousSpace -> CompactibleSpace -> Space;
TenuredSpace, ContigPermSpace;
SpaceMemRegionOopsIterClosure;
}
MemRegion -> _ValueObj;
MemRegionClosure -> StackObj;
group memRegion {
label = "memRegion";
color = "#FFFFFF";
MemRegion;
MemRegionClosureRO -> MemRegionClosure;
}
ClearNoncleanCardWrapper -> MemRegionClosure;
CardTableRS -> GenRemSet -> CHeapObj;
group cardTableRS {
label = "cardTableRS";
color = "#FFFFFF";
ClearNoncleanCardWrapper;
CardTableRS;
}
CardTableModRefBS -> ModRefBarrierSet -> BarrierSet;
group cardTableModRefBS {
label = "cardTableModRefBS";
color = "#FFFFFF";
CardTableModRefBSForCTRS -> CardTableModRefBS;
}
BlockOffsetSharedArray -> CHeapObj;
BlockOffsetTable -> _ValueObj;
group blockOffsetTable {
label = "blockOffsetTable";
color = "#FFFFFF";
BlockOffsetSharedArray;
BlockOffsetArrayNonContigSpace, BlockOffsetArrayContigSpace -> BlockOffsetArray -> BlockOffsetTable;
}
ReferencePolicy -> CHeapObj;
group referencePolicy {
label = "referencePolicy";
color = "#FFFFFF";
LRUCurrentHeapPolicy, LRUMaxHeapPolicy -> ReferencePolicy;
}
ThreadLocalAllocBuffer, GlobalTLABStats -> CHeapObj;
group threadLocalAllocBuffer {
label = "threadLocalAllocBuffer";
color = "#FFFFFF";
ThreadLocalAllocBuffer, GlobalTLABStats;
}
CommonMethodOopCache -> CHeapObj;
DeferredObjAllocEvent -> CHeapObj;
Universe -> AllStatic;
group universe {
label = "universe";
color = "#FFFFFF";
ActiveMethodOopsCache, LatestMethodOopCache -> CommonMethodOopCache;
DeferredObjAllocEvent;
Universe;
}
oopFactory -> AllStatic;
GenMarkSweep -> MarkSweep -> AllStatic;
BarrierSet, FileMapInfo -> CHeapObj;
group allocation0 {
label = "allocation";
color = "#FFFFFF";
ResourceObj -> AllocatedObj;
AllocStats, ReallocMark;
}
group allocation1 {
label = "allocation'";
color = "#FFFFFF";
_ValueObj, AllStatic;
}
ChunkPoolCleaner -> PreriodicTask -> CHeapObj;
ClearedAllSoftRefs, CollectorPolicy -> CHeapObj;
group collectorPolicy {
label = "collectorPolicy";
color = "#FFFFFF";
MarkSweepPolicy -> TwoGenerationCollectorPolicy -> GenCollectorPolicy -> CollectorPolicy;
ClearedAllSoftRefs;
}
GenRemSet -> CHeapObj;
KlassInfoEntry, KlassInfoBucket -> CHeapObj;
HeapInspection -> AllStatic;
KlassInfoClosure, KlassInfoTable, KlassInfoHisto -> StackObj;
group heapInspection {
label = "heapInspection";
color = "#FFFFFF";
KlassInfoEntry, KlassInfoBucket;
HeapInspection;
KlassInfoClosure, KlassInfoTable, KlassInfoHisto;
}
GC_locker -> AllStatic;
No_GC_Verifier -> StackObj;
Pause_No_GC_Verifier, SkipGCALot, No_Alloc_Verifier -> StackObj;
group gcLocker {
label = "gcLocker";
color = "#FFFFFF";
GC_locker;
JRT_Leaf_Verifier -> No_Safepoint_Verifier -> No_GC_Verifier;
Pause_No_Safepoint_Verifier -> Pause_No_GC_Verifier;
SkipGCALot, No_Alloc_Verifier;
}
}
blockdiag {
default_fontsize = 14;
ResourceObj -> AllocatedObj;
AllocStats, ReallocMark -> StackObj;
Chunk, Arena -> CHeapObj;
SharedHeap [color = "#FFFF99"];
GenClosure -> StackObj;
GenCollectedHeap -> SharedHeap -> CollectedHeap -> CHeapObj;
group genCollectedHeap {
label = "genCollectedHeap";
color = "#FFFF99";
GenClosure;
GenCollectedHeap;
}
CodeHeap -> CHeapObj;
HeapBlock -> _ValueObj;
group heap {
label = "heap";
color = "#FFCC99";
FreeBlock -> HeapBlock;
CodeHeap;
}
WaterMark [color = "#FFCC99"];
WaterMark -> _ValueObj;
ResourceMark -> StackObj;
ResourceArea -> Arena;
DeoptResourceMark -> CHeapObj;
group resourceArea {
label = "resourceArea";
color = "#ffcc99";
ResourceMark, ResourceArea, DeoptResourceMark;
}
ObjectClosure -> Closure -> StackObj;
ClassifyObjectClosure, ClearAllocCountClosure, BoolObjectClosure -> ObjectClosure;
group classify {
label = "classify";
color = "#CCCCCC";
ClassifyInstanceKlassClosure -> ClassifyObjectClosure;
ClearAllocCountClosure;
}
ObjectClosure, CodeBlobClosure -> Closure;
UpwardsObjectClosure -> BoolObjectClosure;
BlkClosure, SpaceClosure, CompactibleSpaceClosure, MonitorClosure, YieldClosure, SymbolClosure, RememberKlassesChecker -> StackObj;
SerializeOopClosure -> OopClosure;
group iterator {
label = "iterator";
color = "#ffcc99";
OopClosure -> Closure;
CodeBlobToOopClosure -> MarkingCodeBlobClosure -> CodeBlobClosure;
BoolObjectClosure, ObjectToOopClosure, ObjectClosureCareful -> ObjectClosure;
BlkClosureCareful -> BlkClosure;
SpaceClosure, CompactibleSpaceClosure, MonitorClosure, YieldClosure, SymbolClosure, RememberKlassesChecker;
SerializeOopClosure;
}
KeepAliveClosure -> OopClosure -> Closure;
IsAliveClosure -> BoolObjectClosure;
EvacuateFollowersClosure, FastEvacuateFollowersClosure -> VoidClosure -> StackObj;
group defNewGeneration {
label = "defNewGeneration";
color = "#CCCCCC";
FastKeepAliveClosure -> KeepAliveClosure;
IsAliveClosure;
EvacuateFollowersClosure, FastEvacuateFollowersClosure;
}
OopsInGenClosure -> OopClosure;
FilteringClosure, ScanWeakRefClosure, VerifyOopClosure -> OopClosure;
group genOopClosures {
label = "genOopClosures";
color = "#FFFF99";
ScanClosure, FastScanClosure -> OopsInGenClosure;
FilteringClosure, ScanWeakRefClosure, VerifyOopClosure;
}
CompactingPermGen, PermGen [color = "#FFFF99"];
CompactingPermGen -> PermGen -> CHeapObj;
GenerationSpec -> CHeapObj;
ParmanentGenerationSpec -> CHeapObj;
group generationSpec {
label = "generationSpec";
color = "#FFFF99";
GenerationSpec, ParmanentGenerationSpec;
}
DefNewGeneration, CardGeneration -> Generation -> CHeapObj;
CompactingPermGenGen -> OneContigSpaceCardGeneration -> CardGeneration;
ScratchBlock;
group generation {
label = "generation";
color = "#FFCC99";
ScratchBlock, Generation, OneContigSpaceCardGeneration;
}
TenuredGeneration [color = "#FFFF99"];
TenuredGeneration -> OneContigSpaceCardGeneration;
CompactPoint -> StackObj;
DirtyCardToOopClosure -> MemRegionClosureRO;
Space -> CHeapObj;
TenuredSpace, ContigPermSpace -> OffsetTableContigSpace;
SpaceMemRegionOopsIterClosure -> OopClosure;
group space {
label = "space";
color = "#FFCC99";
CompactPoint;
ContiguousSpaceDCTOC -> Filtering_DCTOC -> DirtyCardToOopClosure;
ConcEdenSpace -> EdenSpace;
EdenSpace, OffsetTableContigSpace -> ContiguousSpace -> CompactibleSpace -> Space;
TenuredSpace, ContigPermSpace;
SpaceMemRegionOopsIterClosure;
}
MemRegion -> _ValueObj;
MemRegionClosure -> StackObj;
group memRegion {
label = "memRegion";
color = "#FFCC99";
MemRegion;
MemRegionClosureRO -> MemRegionClosure;
}
ClearNoncleanCardWrapper -> MemRegionClosure;
CardTableRS -> GenRemSet -> CHeapObj;
group cardTableRS {
label = "cardTableRS";
color = "#FFFF99";
ClearNoncleanCardWrapper;
CardTableRS;
}
CardTableModRefBS -> ModRefBarrierSet -> BarrierSet;
group cardTableModRefBS {
label = "cardTableModRefBS";
color = "#CCCCCC";
CardTableModRefBSForCTRS -> CardTableModRefBS;
}
BlockOffsetSharedArray -> CHeapObj;
BlockOffsetTable -> _ValueObj;
group blockOffsetTable {
label = "blockOffsetTable";
color = "#FFFF99";
BlockOffsetSharedArray;
BlockOffsetArrayNonContigSpace, BlockOffsetArrayContigSpace -> BlockOffsetArray -> BlockOffsetTable;
}
ReferencePolicy -> CHeapObj;
group referencePolicy {
label = "referencePolicy";
color = "#CCCCCC";
LRUCurrentHeapPolicy, LRUMaxHeapPolicy -> ReferencePolicy;
}
ThreadLocalAllocBuffer, GlobalTLABStats -> CHeapObj;
group threadLocalAllocBuffer {
label = "threadLocalAllocBuffer";
color = "#CCCCCC";
ThreadLocalAllocBuffer, GlobalTLABStats;
}
CommonMethodOopCache -> CHeapObj;
DeferredObjAllocEvent -> CHeapObj;
Universe -> AllStatic;
group universe {
label = "universe";
color = "#CCCCCC";
ActiveMethodOopsCache, LatestMethodOopCache -> CommonMethodOopCache;
DeferredObjAllocEvent;
Universe;
}
oopFactory -> AllStatic;
GenMarkSweep -> MarkSweep -> AllStatic;
BarrierSet [color = "#FFFF99"];
BarrierSet, FileMapInfo -> CHeapObj;
group allocation0 {
label = "allocation";
color = "#FF9999";
ResourceObj -> AllocatedObj;
AllocStats, ReallocMark;
}
Chunk [color = "#FF9999"];
Arena [color = "#FF9999"];
CHeapObj [color = "#FF9999"];
StackObj [color = "#FF9999"];
group allocation1 {
label = "allocation'";
color = "#FF9999";
_ValueObj, AllStatic;
}
ChunkPoolCleaner -> PreriodicTask -> CHeapObj;
ClearedAllSoftRefs, CollectorPolicy -> CHeapObj;
group collectorPolicy {
label = "collectorPolicy";
color = "#CCCCCC";
MarkSweepPolicy -> TwoGenerationCollectorPolicy -> GenCollectorPolicy -> CollectorPolicy;
ClearedAllSoftRefs;
}
GenRemSet -> CHeapObj;
KlassInfoEntry, KlassInfoBucket -> CHeapObj;
HeapInspection -> AllStatic;
KlassInfoClosure, KlassInfoTable, KlassInfoHisto -> StackObj;
group heapInspection {
label = "heapInspection";
color = "#CCCCCC";
KlassInfoEntry, KlassInfoBucket;
HeapInspection;
KlassInfoClosure, KlassInfoTable, KlassInfoHisto;
}
GC_locker -> AllStatic;
No_GC_Verifier -> StackObj;
Pause_No_GC_Verifier, SkipGCALot, No_Alloc_Verifier -> StackObj;
group gcLocker {
label = "gcLocker";
color = "#CCCCCC";
GC_locker;
JRT_Leaf_Verifier -> No_Safepoint_Verifier -> No_GC_Verifier;
Pause_No_Safepoint_Verifier -> Pause_No_GC_Verifier;
SkipGCALot, No_Alloc_Verifier;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment