如何查看HotSpot优化后生成的代码?
我想更好地了解 HotSpot 在运行时可能为我的 Java 代码生成哪些优化。
有没有办法查看HotSpot运行一段时间后正在使用的优化代码?
I'd like to have a better understanding of what optimizations HotSpot might generate for my Java code at run time.
Is there a way to see the optimized code that HotSpot is using after it's been running for a while?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用选项
-XX:+PrintAssembly
和-XX:UnlockDiagnosticVMOptions
启动 JVM,但 PrintAssembly 要求 JVM 具有 hsdis 二进制文件(HotSpot 反汇编程序)。由于许可证不兼容,hsdis 二进制文件未随 JVM 一起分发,因此您需要 编译hsdis 自己或查找从非官方网站预构建的 hsdis 二进制文件。为了理解输出,像 JITWatch 这样的工具很有用。按照其说明将调试信息写入可以在 JITWatch 中分析的日志文件。
You will need to start the JVM with the options
-XX:+PrintAssembly
and-XX:UnlockDiagnosticVMOptions
, but PrintAssembly requires the JVM to have the hsdis binary (HotSpot disassembler). The hsdis binary is not distributed with the JVM due to license incompatibility, so you will need to compile hsdis yourself or find a prebuilt hsdis binary from an unofficial web site.To make sense of the output, a tool like JITWatch is useful. Follow its instructions to write the debug information to a log file which can be analyzed in JITWatch.
http://mail.openjdk.java.net/ Pipermail/hotspot-dev/2009-February/001255.html
http://mail.openjdk.java.net/pipermail/hotspot-dev/2009-February/001255.html