These are the current NMT categories:
#define MEMORY_TYPES_DO(f) \
/* Memory type by sub systems. It occupies lower byte. */ \
f(mtJavaHeap, "Java Heap") /* Java heap */ \
f(mtClass, "Class") /* Java classes */ \
f(mtThread, "Thread") /* thread objects */ \
f(mtThreadStack, "Thread Stack") \
f(mtCode, "Code") /* generated code */ \
f(mtGC, "GC") \
f(mtGCCardSet, "GCCardSet") /* G1 card set remembered set */ \
f(mtCompiler, "Compiler") \
f(mtJVMCI, "JVMCI") \
f(mtInternal, "Internal") /* memory used by VM, but does not belong to */ \
/* any of above categories, and not used by */ \
/* NMT */ \
f(mtOther, "Other") /* memory not used by VM */ \
f(mtSymbol, "Symbol") \
f(mtNMT, "Native Memory Tracking") /* memory used by NMT */ \
f(mtClassShared, "Shared class space") /* class data sharing */ \
f(mtChunk, "Arena Chunk") /* chunk that holds content of arenas */ \
f(mtTest, "Test") /* Test type for verifying NMT */ \
f(mtTracing, "Tracing") \
f(mtLogging, "Logging") \
f(mtStatistics, "Statistics") \
f(mtArguments, "Arguments") \
f(mtModule, "Module") \
f(mtSafepoint, "Safepoint") \
f(mtSynchronizer, "Synchronization") \
f(mtServiceability, "Serviceability") \
f(mtMetaspace, "Metaspace") \
f(mtStringDedup, "String Deduplication") \
f(mtObjectMonitor, "Object Monitors") \
f(mtNone, "Unknown") \
The memory used by JFR might already be tracked via "Internal" or "Tracing" category, but if it is not yet, should we add it?
#define MEMORY_TYPES_DO(f) \
/* Memory type by sub systems. It occupies lower byte. */ \
f(mtJavaHeap, "Java Heap") /* Java heap */ \
f(mtClass, "Class") /* Java classes */ \
f(mtThread, "Thread") /* thread objects */ \
f(mtThreadStack, "Thread Stack") \
f(mtCode, "Code") /* generated code */ \
f(mtGC, "GC") \
f(mtGCCardSet, "GCCardSet") /* G1 card set remembered set */ \
f(mtCompiler, "Compiler") \
f(mtJVMCI, "JVMCI") \
f(mtInternal, "Internal") /* memory used by VM, but does not belong to */ \
/* any of above categories, and not used by */ \
/* NMT */ \
f(mtOther, "Other") /* memory not used by VM */ \
f(mtSymbol, "Symbol") \
f(mtNMT, "Native Memory Tracking") /* memory used by NMT */ \
f(mtClassShared, "Shared class space") /* class data sharing */ \
f(mtChunk, "Arena Chunk") /* chunk that holds content of arenas */ \
f(mtTest, "Test") /* Test type for verifying NMT */ \
f(mtTracing, "Tracing") \
f(mtLogging, "Logging") \
f(mtStatistics, "Statistics") \
f(mtArguments, "Arguments") \
f(mtModule, "Module") \
f(mtSafepoint, "Safepoint") \
f(mtSynchronizer, "Synchronization") \
f(mtServiceability, "Serviceability") \
f(mtMetaspace, "Metaspace") \
f(mtStringDedup, "String Deduplication") \
f(mtObjectMonitor, "Object Monitors") \
f(mtNone, "Unknown") \
The memory used by JFR might already be tracked via "Internal" or "Tracing" category, but if it is not yet, should we add it?