@@ -35,16 +35,30 @@ default, and the telemetry each produces:
3535<!-- DO NOT MANUALLY EDIT. Regenerate table following changes to instrumentation using ./gradlew generateDocs -->
3636<!-- generateDocsStart -->
3737
38- | JfrFeature | Default Enabled | Metrics |
39- | ---------------------------| -----------------| -------------------------------------------------------------------------------------------------------------------|
40- | BUFFER_METRICS | ` false ` | ` jvm.buffer.count ` , ` jvm.buffer.memory.limit ` , ` jvm.buffer.memory.used ` |
41- | CLASS_LOAD_METRICS | ` false ` | ` jvm.class.count ` , ` jvm.class.loaded ` , ` jvm.class.unloaded ` |
42- | CONTEXT_SWITCH_METRICS | ` true ` | ` jvm.cpu.context_switch ` |
43- | CPU_COUNT_METRICS | ` true ` | ` jvm.cpu.limit ` |
44- | CPU_UTILIZATION_METRICS | ` false ` | ` jvm.cpu.recent_utilization ` , ` jvm.system.cpu.utilization ` |
45- | GC_DURATION_METRICS | ` false ` | ` jvm.gc.duration ` |
46- | LOCK_METRICS | ` true ` | ` jvm.cpu.longlock ` |
47- | MEMORY_ALLOCATION_METRICS | ` true ` | ` jvm.memory.allocation ` |
48- | MEMORY_POOL_METRICS | ` false ` | ` jvm.memory.committed ` , ` jvm.memory.init ` , ` jvm.memory.limit ` , ` jvm.memory.used ` , ` jvm.memory.used_after_last_gc ` |
49- | NETWORK_IO_METRICS | ` true ` | ` jvm.network.io ` , ` jvm.network.time ` |
50- | THREAD_METRICS | ` false ` | ` jvm.thread.count ` |
38+ ** Warning** : JFR events might not be available for all JVMs or with a GraalVM native image, therefore limiting the produced metrics. The original implementation was done for Hotspot. OpenJ9 currently (Nov. 2025) only has the VM-level JFR implementation. So events emitted at the Java level (ie. in jdk.jfr) will not be present. Meaning, jdk.SocketRead, jdk.SocketWrite won't work.
39+
40+ | JfrFeature | Jfr Event names | Default Enabled | Metric names |
41+ | ---------------------------| ----------------------------------------------------------------------------------------------| -----------------| -------------------------------------------------------------------------------------------------------------------|
42+ | BUFFER_METRICS | ` jdk.DirectBufferStatistics ` [ 6] | ` false ` | ` jvm.buffer.count ` , ` jvm.buffer.memory.limit ` , ` jvm.buffer.memory.used ` |
43+ | CLASS_LOAD_METRICS | ` jdk.ClassLoadingStatistics ` [ 5] | ` false ` | ` jvm.class.count ` , ` jvm.class.loaded ` , ` jvm.class.unloaded ` |
44+ | CONTEXT_SWITCH_METRICS | ` jdk.ThreadContextSwitchRate ` [ 6] | ` true ` | ` jvm.cpu.context_switch ` |
45+ | CPU_COUNT_METRICS | ` jdk.ContainerConfiguration ` | ` true ` | ` jvm.cpu.limit ` |
46+ | CPU_UTILIZATION_METRICS | ` jdk.CPULoad ` [ 6] | ` false ` | ` jvm.cpu.recent_utilization ` , ` jvm.system.cpu.utilization ` |
47+ | GC_DURATION_METRICS | ` jdk.G1GarbageCollection ` [ 1] , ` jdk.OldGarbageCollection ` [ 4] , ` jdk.YoungGarbageCollection ` [ 4] | ` false ` | ` jvm.gc.duration ` |
48+ | LOCK_METRICS | ` jdk.JavaMonitorWait ` | ` true ` | ` jvm.cpu.longlock ` |
49+ | MEMORY_ALLOCATION_METRICS | ` jdk.ObjectAllocationInNewTLAB ` , ` jdk.ObjectAllocationOutsideTLAB ` [ 2] | ` true ` | ` jvm.memory.allocation ` |
50+ | MEMORY_POOL_METRICS | ` jdk.G1HeapSummary ` [ 1] , ` jdk.MetaspaceSummary ` [ 2] , ` jdk.PSHeapSummary ` [ 3] | ` false ` | ` jvm.memory.committed ` , ` jvm.memory.init ` , ` jvm.memory.limit ` , ` jvm.memory.used ` , ` jvm.memory.used_after_last_gc ` |
51+ | NETWORK_IO_METRICS | ` jdk.SocketRead ` , ` jdk.SocketWrite ` | ` true ` | ` jvm.network.io ` , ` jvm.network.time ` |
52+ | THREAD_METRICS | ` jdk.JavaThreadStatistics ` | ` false ` | ` jvm.thread.count ` |
53+
54+ ** [ 1] ** - G1 doesn't exist if you use the [ community edition] ( https://www.graalvm.org/community/ ) for GraalVM native image.
55+
56+ ** [ 2] ** - Not applicable for GraalVM native image.
57+
58+ ** [ 3] ** - No parallel GC on GraalVM native image.
59+
60+ ** [ 4] ** - On GraalVM there is no true "old" and "eden" spaces. Everything is allocated in linked heap chunks.
61+
62+ ** [ 5] ** - No dynamic class loading on GraalVM.
63+
64+ ** [ 6] ** - Possible but not implemented on GraalVM, as of Nov. 2025.
0 commit comments