带有JCMD的Java线程转储



我在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

最新更新