3

我在执行 Java 程序时使用 JMAP 创建 JVM 的堆转储。然后使用 JHAT 我在浏览器中打开转储详细信息。

现在,我可以看到内存转储的许多细节,但我不知道如何简单地查看程序变量值及其值。你能在这里指导我吗?我只需要使用命令行来显示变量名称和值。

提前致谢!

4

2 回答 2

2

最简单的方法是使用 jvisualvm:转到文件菜单 > 加载 > 在下拉框中选择“堆转储”,然后选择您的转储文件。

现在您可以探索各种类并查看其字段的价值。

于 2016-03-09T13:09:57.823 回答
1

浏览器更友好,你可以在这里找到快速教程

http://petermodzelewski.blogspot.in/2013/06/short-jhat-tutorial-diagnosing.html

用于命令行使用

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jhat.html

[编辑]

第 1 步:让您的应用程序保持运行

第 2 步:查找进程 id (pID --say 4416) 第 3 步:从 (JDKHOME) 运行以下命令

jmap -dump:live,file=snapshot.11212013 4416

运行此程序后,您应该收到一条消息说

热转储已创建

第 4 步:通过执行以下命令启动 jHat (

jhat -J-Xmx1024m 快照.11212013

你应该收到一条消息说

快照已解决。在端口 7000 上启动 HTTP 服务器 服务器已准备就绪。

第五步:打开浏览器:

http://localhost:7000/

第 6 步:默认情况下,显示所有类的链接

第 7 步:搜索您的班级(查找浏览器选项)

第 8 步:单击链接应该会进入一个页面,您可以在其中看到所有变量、引用、子类及其内存使用情况

-在此处输入图像描述

于 2013-11-21T10:35:19.093 回答