JVM- jhat工具使用

导出堆 

进入cmd  输入jdk的bin目录 输入 jmap -dump:live,file=a.map 2524

a可以是随意起的堆名称  2524 是eclipse.exe进程PID。(可以用jps查询相关java进程)

查看jmap用法,cmd进入bin目录后输入jmap 会有提示,example 有例子。

分析堆文件

输入 jhat a.map 

jhat内置一个简单的web服务器,此命令执行后,jhat在命令行里显示分析结果的访问地址,可以用-port选项 指定端口

如果想指定内存和端口(dump出来的堆很大,在启动时会报堆空间不足的错误): jhat -J-Xmx512m -port 7200 a.map

 如果不指定端口的话 会提示 ...Start Http Server on port 7000,Server is ready

这时可以直接打开浏览器查看

http://localhost:7000/  这里看到所有的类

进入oql查询界面   http://localhost:7000/oql/ 

具体OQL用法可见:http://localhost:7000/oqlhelp/

 

注: 2524 是本地的eclipse.exe的pid

更多jmap 

查看更多的JVM内存状态   jmap -histo 2524 

导出文件如果写了可以只写名称,这样文件(可以是.map,.txt等)会默认的放到一个位置。也可以指定相应的位置。如jmap jmap -dump:file=c:\dump.txt 2524

分析也要写全路径  jhat -port 7300 c:\dump.txt

3 简单方式

 这样使用oql似乎太麻烦了,jvisualvm 更为方便  点击本地的监视,右侧有一个堆dump,点击进去就可以看到有一个oql的选项,这里可以直接输入oql语句,查询结果也相对好看了很多。

 jvisualvm可以指定oql,下次可以直接选之前保存的oql语句,同时也给出了很多的oql样例

 

 

你可能感兴趣的:(jhat)