如何使用系统探查器禁用Java堆栈框架优化或概要文件堆栈?
系统探查器,如DTrace和Linux perf_事件,能够从JVM中探查堆栈跟踪。现在,撇开符号不谈(这是另一个问题),DTrace和perf_事件都收集了许多仅为1帧的堆栈。这些是不完整的部分堆栈 我尝试了DTrace jstack()和Linux perf_事件,包括帧指针和dwarf堆栈展开 我相信这是由于热点编译优化的框架。有没有办法禁用此优化,以便标准系统探查器(如Solaris DTrace和Linux perf)工作如何使用系统探查器禁用Java堆栈框架优化或概要文件堆栈?,java,linux,jvm,jvm-hotspot,dtrace,Java,Linux,Jvm,Jvm Hotspot,Dtrace,系统探查器,如DTrace和Linux perf_事件,能够从JVM中探查堆栈跟踪。现在,撇开符号不谈(这是另一个问题),DTrace和perf_事件都收集了许多仅为1帧的堆栈。这些是不完整的部分堆栈 我尝试了DTrace jstack()和Linux perf_事件,包括帧指针和dwarf堆栈展开 我相信这是由于热点编译优化的框架。有没有办法禁用此优化,以便标准系统探查器(如Solaris DTrace和Linux perf)工作 我已经尝试了以下选项:-XX:+DeoptimizeRando
我已经尝试了以下选项:-XX:+DeoptimizeRandom-XX:MaxInlineSize=0-XX:-OmitStackTraceInFastThrow-XX:+UnlockDiagnosticVMOptions-XX:+ShowHiddenFrames这是一个JVM问题,最好用bug来描述: 虽然这描述了DTrace jstack()的问题,但我相信同样的优化(使用帧指针作为寄存器)正在破坏perf_事件 这可能在JDK 9中得到修复。见: 感谢hotspot开发者的回答