如何在堆转储中查看程序变量名称和值?

时间:2013-11-21 10:13:21

标签: java command-line dump jmap jhat

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

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

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

现在,您可以浏览各种类并查看其字段的值。

答案 1 :(得分:0)

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

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

运行此功能后,您应该收到一条消息

  

创建了heatdump

步骤4:执行以下命令启动jHat(

  

jhat -J-Xmx1024m snapshot.11212013

你应该收到一条消息说

  

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

步骤5:打开浏览器:

  

http://localhost:7000/

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

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

步骤8:点击链接应该到一个页面,在那里你可以看到所有变量,引用,子类及其内存使用情况

- enter image description here