概述如何禁用Java堆栈帧优化或使用系统分析器的configuration文件堆栈?
系统分析器(如DTrace和linux perf_events)可以从JVM中分析堆栈跟踪。 现在,除了符号之外(这是另一个问题),DTrace和perf_events都会收集很多只有1帧的堆栈。 这些是部分的,不完整的堆栈。
我已经尝试了DTrace Jstack()和linux的perf_events,同时指定了帧指针和矮栈解压。
我相信这是由于热点编译优化框架。 有没有办法禁用这种优化,以便标准系统configuration文件(如Solaris DTrace和linux perf)的工作?
我已经尝试了以下选项:-XX:+ DeoptimizeRandom -XX:MaxInlinesize = 0 -XX:-OmitStackTraceInFastThrow -XX:+ UnlockDiagnosticVMOptions -XX:+ ShowHIDdenFrames
Dtrace探针说明符错误
了解dtruss的输出
DTrace for linux ustack()无效地址正在运行
我们可以用dtrace来分析每个核心吗?
生产linux系统(RH / CentOS和Debian / Ubuntu)中系统级跟踪的状态是什么?
Ubuntu上的DTrace,怎么样?
ltrace相当于osx?
如何在dtrace中查找参数
如何衡量互斥的争夺?
这是一个JVM问题,最好由BUG描述:
https://BUGs.openjdk.java.net/browse/JDK-6276264
虽然这描述了DTrace Jstack()的问题,我相信相同的优化(使用帧指针作为寄存器)正在打破perf_events。
这可能会在JDK 9中修复。请参阅:
http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2014-June/014842.HTML
感谢热点的开发者回答这个问题。
总结
以上是内存溢出为你收集整理的如何禁用Java堆栈帧优化或使用系统分析器的configuration文件堆栈?全部内容,希望文章能够帮你解决如何禁用Java堆栈帧优化或使用系统分析器的configuration文件堆栈?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容