jmap + Eclipse MAT :排查内存泄漏的好工具
来源:互联网 发布:linux可以安装exe吗 编辑:程序博客网 时间:2024/06/05 08:40
最近在测一个接口时,发现在并发压力的情况下,用jconsole监控JVM后,发现服务器灰常耗费内存导致GC频繁从而影响了性能,故想找到程序中具体哪块比较耗费内存。搜索一些资料后,终于找到了一个好用而界面直观的工具,能帮助我们很好的分析内存的耗费情况~
先说明一个linux下的命令 jps 和 jmap:
jps 用于列出所有java相关线程的pid等信息,如:
[root@myjrjapp-100 ~]# jps
23178 Jps
20289 Bootstrap
其中,“20289 Bootstrap”是指系统中运行的tomcat进程号和进程名。
jmap是一个可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。jmap-dump:format=b,file=f13024可以将3024进程的内存heap输出出来到f1文件里。它可以打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)
如:jmap pid 打印内存使用的摘要信息
分析方法1:
以上两个命令可以结合起来用,例如:
[root@myjrjapp-100 ~]# jps
23178 Jps
20289 Bootstrap
[root@myjrjapp-100 ~]# jmap 20289
Attaching to process ID 20289, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 10.0-b19
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 1048576 (1.0MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 4194304 (4.0MB)
NewRatio = 8
SurvivorRatio = 8
PermSize = 134217728 (128.0MB)
MaxPermSize = 268435456 (256.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 118358016 (112.875MB)
used = 38070328 (36.30669403076172MB)
free = 80287688 (76.56830596923828MB)
32.165398919833194% used
From Space:
capacity = 458752 (0.4375MB)
used = 155664 (0.1484527587890625MB)
free = 303088 (0.2890472412109375MB)
33.932059151785715% used
To Space:
capacity = 458752 (0.4375MB)
used = 0 (0.0MB)
free = 458752 (0.4375MB)
0.0% used
PS Old Generation
capacity = 954466304 (910.25MB)
used = 72784624 (69.41282653808594MB)
free = 881681680 (840.8371734619141MB)
7.625688166776813% used
PS Perm Generation
capacity = 134217728 (128.0MB)
used = 38192248 (36.42296600341797MB)
free = 96025480 (91.57703399658203MB)
28.455442190170288% used
[root@myjrjapp-100 ~]#
分析方法2:
使用jmap命令dump内存出来:
jmap -dump:live,format=b,file=heap.bin 8023
之后会在当前目录创建一个”heap.bin”文件,会有好几百M大小。可以把此文件进行压缩,然后再传到其他windows机器中进行结果分析。
[root@openAS-main ~]# gzip heap.bin
分析:
在测试机上安装一个分析工具:MemoryAnalyzer-Incubation-0.8.0.20100408-win32.win32.x86 这是Eclipse MAT,是SAP公司贡献的一个工具,可以在Eclipse网站下载到它,完全免费的。
官网下载地址:http://www.eclipse.org/mat/downloads.php
分析截图:
详细数据信息:
从上面两个图中就能具体分析出是程序中的哪块耗费掉了大量的内存啦~
转载自:http://blog.csdn.net/rital/article/details/5511141
- jmap + Eclipse MAT :排查内存泄漏的好工具
- jmap + Eclipse MAT :排查内存泄漏的好工具
- jmap + Eclipse MAT :排查内存泄漏的好工具
- jmap + Eclipse MAT :排查内存泄漏的好工具
- Jmap+MAT 排查内存泄漏
- 内存泄漏 之 MAT工具的使用
- 【内存泄露排查】应用内存分析方案,采用jmap命令dump内存数据采样后,eclipse mat插件分析
- eclipse 中使用内存分析工具MAT分析内存泄漏
- 使用Eclipse MAT查找内存泄漏工具介绍
- MAT内存泄漏分析工具
- 使用jmap和MAT定位内存泄漏OOM
- 使用jmap和MAT定位内存泄漏OOM .
- 使用jmap和MAT定位内存泄漏OOM .
- 使用jmap和MAT定位内存泄漏OOM .
- Android 内存泄漏的排查
- jni开发 - jmap+mat内存分析工具介绍
- Android App 内存泄漏检查工具MAT
- 内存泄漏之分析工具MAT
- test20
- 凤求凰·琴歌
- seajs下require书写约定
- 一切成功源于积累——20141203 命运开始的21时间 一直到26时间才休 美元指数89 美日119.900
- strace
- jmap + Eclipse MAT :排查内存泄漏的好工具
- C++实现Http Post请求
- windows下配置nginx+php环境
- 【剑指Offer面试编程题】题目1384:二维数组中的查找--九度OJ
- jvm调优
- 6.Android内核 创建窗口的过程(一)
- Devexpress 覆盖父窗体的资源
- urlopen error [Errno 10061]的解决办法
- mount命令示例