我在Ubuntu Linux机器上使用Java1.8。使用以下命令创建了线程转储:
jcmd 1670 Thread.print > Thread.jfr
将文件复制到本地MAC机器并双击以在JMC中打开。它未能打开。怎么打开?
我试着在安装了内存分析器的STS中打开同一个文件,它并不能识别jfr文件。
1( 以上方法有什么问题?
2( 分析线程和堆转储的最佳工具是什么?
3( 堆还是线程转储大小取决于RAM大小?我们有64GB的ram系统,分配40GB给一个应用服务器。这有什么问题吗?
1(JFR文件是JDK飞行记录器生成的包含大量信息的文件。它是二进制格式的。您不能仅仅重命名一个文本线程堆栈转储,使其成为飞行记录。
2( 这取决于你在寻找什么。Eclipse MAT适用于堆转储。如果你想做堆废料分析,JOverflow很好(请参阅我的博客http://hirt.se/blog/?p=854)。有一个用于JMC的线程分析插件,但我已经习惯了拥有比线程堆栈转储更丰富的信息。我建议仔细研究一下JFR和JMC。
3( 堆转储将与Java堆上的实时数据成比例,具体取决于转储方式。线程堆栈转储将与线程数量和跟踪深度成比例。
如果你想了解更多,请查看此博客:http://hirt.se/blog/?p=939