如何使用系统探查器禁用 Java 堆栈帧优化或配置文件堆栈?
2022-09-04 22:44:05
系统分析器(如 DTrace 和 Linux perf_events)能够分析来自 JVM 的堆栈跟踪。现在,撇开符号(这是另一个问题)不谈,DTrace 和 perf_events收集许多只有 1 帧的堆栈。这些是部分、不完整的堆栈。
我尝试过DTrace jstack()和Linux perf_events,同时具有帧指针和矮堆栈展开。
我相信这是由于热点编译优化的帧。有没有办法禁用此优化,以便标准系统分析器(如 Solaris DTrace 和 Linux 性能)正常工作?
我已经尝试了以下选项: -XX:+DeoptimizeRandom -XX:MaxInlineSize=0 -XX:-OmitStackTraceInFastThrow -XX:+UnlockDiagnosticVMOptions -XX:+ShowHiddenFrames