0

我在 Ubuntu Linux 机器上使用 Java1.8。使用以下命令创建了一个线程转储:

jcmd 1670 Thread.print > Thread.jfr

将文件复制到本地MAC机器并双击在JMC中打开。它无法打开。如何打开它?

我试图在安装了内存分析器的 STS 中打开相同的文件,它不能识别 jfr 文件。

1)上述方法有什么问题?

2) 分析线程和堆转储的最佳工具是什么?

3) 堆或线程转储大小是否取决于 RAM 大小?我们有 64 GB ram 系统,分配 40 GB 给一个应用服务器。这有什么问题吗?

4

1 回答 1

1

1) JFR 文件是由 JDK Flight Recorder 生成的包含大量信息的文件。它是二进制格式。您不能只重命名文本线程堆栈转储以使其成为飞行记录。

2)取决于你在寻找什么。Eclipse MAT 非常适合堆转储。如果您想进行堆浪费分析,JOverflow 是不错的选择(请参阅我的博客http://hirt.se/blog/?p=854)。JMC 有一个线程分析插件,但我已经习惯了拥有比线程堆栈转储更丰富的信息。我建议仔细看看 JFR 和 JMC。

3) 堆转储将根据您的转储方式与 Java 堆上的实时数据成比例。线程堆栈转储将与线程数和跟踪深度成正比。

如果您想了解更多信息,请查看此博客: http ://hirt.se/blog/?p=939

于 2018-08-03T19:58:16.350 回答