4.4.2 以二进制形式输出heap内容到文件
jmap -J-d64 -dump:live,format=b,file=/tmp/jmap_b.bin 10968 4.4.3 打印准备回收的对象的信息 jmap -J-d64 -finalizerinfo 10968 4.4.4 打印持久层的信息
4.4.5 打印堆heap的信息
jmap -J-d64 -heap 10968 Attaching to process ID 10968, please wait... Debugger attached successfully. Server compiler detected. JVM version is 17.1-b03
using thread-local object allocation. Parallel GC with 8 thread(s)
Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70
MaxHeapSize = 3145728000 (3000.0MB) NewSize = 1310720 (1.25MB) MaxNewSize = 268435456 (256.0MB) OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8
PermSize = 134217728 (128.0MB) MaxPermSize = 268435456 (256.0MB)
Heap Usage:
PS Young Generation Eden Space:
capacity = 243793920 (232.5MB)
used = 64814496 (61.811920166015625MB) free = 178979424 (170.68807983398438MB) 26.585772114415324% used From Space:
capacity = 11403264 (10.875MB)
used = 9095024 (8.673690795898438MB) free = 2308240 (2.2013092041015625MB) 79.75807628412356% used To Space:
capacity = 12320768 (11.75MB)
used = 0 (0.0MB)
free = 12320768 (11.75MB) 0.0% used PS Old Generation
capacity = 2877292544 (2744.0MB)
used = 328689408 (313.462646484375MB) free = 2548603136 (2430.537353515625MB) 11.423565833978682% used PS Perm Generation
capacity = 134217728 (128.0MB)
used = 44710992 (42.63972473144531MB) free = 89506736 (85.36027526855469MB) 33.31228494644165% used
5. Jhat
5.1 简介
jhat命令 -- Java Head Analyse Tool
用途:是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言 5.2 使用方法: 1> 到处堆文件
jmap -J-d64 -dump:live,format=b,file=/tmp/jmap_b.bin 10968 2> 分析堆文件
jhat -J-d64 -port 9015 /tmp/jmap_b.bin 指定访问端口为:9015 3> 查看:
http://ip:9015/
6. Mat
6.1 简介
MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,
它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,
看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。 6.2 为什么使用MAT
当服务器应用占用了过多内存的时候,会遇到OutOfMemoryError。如何快速定位问题呢? Eclipse MAT的出现使这个问题变得非常简单。它能够离线分析dump的文件数据。
Eclipse MAT是SAP公司贡献的一个工具,可以在Eclipse网站下载到它,完全免费的。它可比Sun提供的内存镜像分析工具jhat要强太多了。
6.3 使用 6.3.1 下载
到http://www.eclipse.org/mat/downloads.php下载windows系统安装版或eclipse使用的插件
我这里使用的是安装版本是:
MemoryAnalyzer-1.1.1.20110824-win32.win32.x86.zip 解压后直接执行: 界面如下:
6.3.2 生成heap的二进制堆文件
jmap -J-d64 –dump:format=b,file=/tmp/jmap_b.bin 10968 6.3.3 用mat打开jmap_b.bin文件
选择:Open Heap Dump…打开heap二进制文件。 然后出现如下界面:
我们选择查看:可疑的内存写了报告即默认的第一项:Leak Suspects Report。 然后出现如下结果:
7. Jinfo
7.1 简介
jinfo可以输出并修改运行时的java 进程的opts。 用处比较简单,用于输出JAVA系统参数及命令行参数 7.2 命令格式 jinfo -opt pid 7.3 使用例子 1>
如:查看进程2788的MaxPerm大小可以用 jinfo -flag MaxPermSize 10968。 2>查看jvm参数: jinfo -flags 10968 3>查看某进程的运行环境: jinfo 10968
8. Jconsole
8.1 简介
jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。
用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。命令行里打 jconsole,选则进程就可以了。
需要注意的就是在运行jconsole之前,必须要先设置环境变量DISPLAY,否则会报错误,Linux下设置环境变量如下: export DISPLAY=:0.0 8.2 本地监控: $ jconsole
如果没有安装java运行的桌面环境会报如下错误:
Exception in thread \
/usr/local/jdk1.6.0_22/jre/lib/amd64/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1699) at java.lang.Runtime.load0(Runtime.java:770) at java.lang.System.load(System.java:1003)
at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1720) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java_实用工具笔记(2)在线全文阅读。
相关推荐: