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

标签 java command-line dump jmap jhat

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

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

提前致谢!

最佳答案

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

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 is created

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

jhat -J-Xmx1024m snapshot.11212013

你应该收到一条消息说

Snapshot resolved. Started HTTP server on port 7000 Server is ready.

第 5 步:打开浏览器:

http://localhost:7000/

第 6 步:默认显示所有类(class)的链接

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

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

- enter image description here

关于java - 如何在堆转储中查看程序变量名称和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118030/

相关文章:

java - Fitnesse 固定装置 - 找不到设置方法

linux - 从linux命令行创建word doc文件

mysqldump 提示密码,即使凭据保存在/home/user/.my.cnf

c++ - 只听多端口

java - 找到最大的子树

java - neo4j 2.0 启动时遇到问题

Java - 无法创建具有 777 权限的目录(取而代之的是 775)

python使用argparse.ArgumentParser方法

linux - 为什么这个文件没有下载到指定位置?

java - 抑制 Java Ctrl+Break 行为