JVM波动诊断使用示例
监测模式
1
|
devkit diag jvm-jitter -a monitor -e jit.deoptimization -c /home/DevKit-CLI-xx.xx.xx-Linux-Kunpeng/diag/config/kunpeng_devkit.cfg -p 1179 |

参数-a monitor指定为监测模式,参数-e jit.deoptimization指定监测退优化事件,参数-c指定配置文件路径,参数-p 1179指定待监测Java进程的进程号。
返回信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
17:27:28.597 [main] DEBUG com.huawei.kunpeng.devkit.odin.cli.config.JvmCliAppConfig - The cli cmd is -a:monitor:-e:jit.deoptimization:-c:/home/DevKit-CLI-xx.xx.xx-Linux-Kunpeng/diag/config/kunpeng_devkit.cfg:-p:1179: 17:27:28.961 [jvm-diagnosis-guardian-common-thread-1] INFO com.huawei.kunpeng.devkit.odin.cli.CliWorker - Success to build unixSocket connect 17:27:28.964 [jvm-diagnosis-guardian-common-thread-1] DEBUG com.huawei.kunpeng.devkit.odin.cli.CliWorker - begin jvm diagnosis monitor is called 17:27:28.964 [jvm-diagnosis-profiler-wireIo-thread-1] DEBUG com.huawei.kunpeng.devkit.odin.profiler.wire.WireIo - start receiving message. type : JvmDiagnosisResp 17:27:29.000 [jvm-diagnosis-profiler-wireIo-thread-1] INFO com.huawei.kunpeng.devkit.odin.cli.CliWorker - other type: CPU_JDBC_METHOD 17:27:30.062 [jvm-diagnosis-guardian-common-thread-1] DEBUG com.huawei.kunpeng.devkit.odin.profiler.wire.WireIo - sending message : type: JVM_JIT_MONITOR 17:27:30.066 [jvm-diagnosis-guardian-common-thread-1] DEBUG com.huawei.kunpeng.devkit.odin.profiler.wire.WireIo - message is sent 17:27:31.779 [jvm-diagnosis-profiler-wireIo-thread-1] INFO com.huawei.kunpeng.devkit.odin.cli.CliWorker - JVM_JIT_MONITOR, deoptimizationRatio= 0.0, startTime=2025/02/22 PM 05:27:31.751, compileCount=2353, deoptimizationCount=140 17:27:32.752 [jvm-diagnosis-profiler-wireIo-thread-1] INFO com.huawei.kunpeng.devkit.odin.cli.CliWorker - JVM_JIT_MONITOR, deoptimizationRatio= 0.0, startTime=2025/02/22 PM 05:27:31.851, compileCount=2384, deoptimizationCount=140 ... ... ... |
分析模式
1
|
devkit diag jvm-jitter -a report -e jit.deoptimization -f /home/test/JIT_20250222_141519.jfr -o /home/report |

参数-a report指定为分析模式,参数-e jit.deoptimization指定分析退优化事件,参数-f指定待分析的jfr文件路径,参数-o /home/report为指定火焰图文件生成路径。
返回信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
17:07:13.607 [main] DEBUG com.huawei.kunpeng.devkit.odin.cli.config.JvmCliAppConfig - The cli cmd is -a:report:-e:jit.deoptimization:-f:/home/test/JIT_20250222_141519.jfr: ----------------------------------------------------------- Reason Deoptimization methods predicate 1 unstable_if 2 bimorphic_or_optimized_type_check 8 class_check 4 ------------------------------------------------------------ Action Deoptimization methods reinterpret 2 maybe_recompile 13 ------------------------------------------------------------ Method Reason Action Instruction Line No. Compiler StartTime org.json.JSONObject.testValidity(Object) class_check maybe_recompile checkcast 2608 c2 2025/02/22 PM 02:14:57.020 org.json.JSONObject.testValidity(Object) class_check maybe_recompile checkcast 2608 c2 2025/02/22 PM 02:14:57.320 org.json.JSONObject.testValidity(Object) class_check maybe_recompile checkcast 2608 c2 2025/02/22 PM 02:14:57.620 java.lang.StringLatin1.canEncode(int) unstable_if reinterpret ifne 54 c2 2025/02/22 PM 02:15:18.963 java.lang.CharacterData.of(int) unstable_if reinterpret ifne 72 c2 2025/02/22 PM 02:15:19.264 ... ... ... 17:07:14,786 [main] c.h.k.d.o.cli.report.JfrToFlameGraph: The generated flame graph is: /home/report/FlameGraph_JIT_20250222_141519_20250222170713.html |
报告参数 |
说明 |
---|---|
Method |
触发退优化的方法名称。 |
Reason |
触发退优化的原因,例如:
|
Action |
JVM针对退优化采取的具体操作,例如:
|
Instruction |
触发退优化的字节码指令。 |
Line No. |
触发退优化的Java源码行号。 |
Compilers |
涉及退优化的编译器类型,例如:
|
图1 JIT火焰图

父主题: JVM性能波动诊断