![](https://csdnimg.cn/release/download_crawler_static/86293731/bg1.jpg)
么时候会到MAT?为么需要分析GC?
1)OutOfMemoryError的时候,触发full gc,但空间却回收,引发内存泄
2)Java服务系统异常,如load飙,io异常,或者线程死锁等,都可能通过分析堆中的内存对象来定位原因
JVM 相关JDK命令操作
查看 Java 进程信息
1.查看当前机上所有运的java进程名称与pid(进程编号)
JVM Process Status Tool,显⽰指定系统内所有的HotSpot虚拟机进程
1 jps$-l
2 //或
3 ps$-ef$|$grep$java
成heap dump件
1.法:使jdk的jmap命令
1 jmap$-dump:format=b,file=dump.heap$$pid
2 //如果只dump$heap中的存活对象,则加上选项-live,如下:
3 jmap$$-dump:live,format=b,file=/path/dump.heap$pid
2.法:让JVM在遇到OutOfMemoryError时成Dump件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path
使jstat监视虚拟机运时状态
jstat(JVM statistics Monitoring)是⽤于监视虚拟机运⾏时状态信息的命令,它可以显⽰出虚拟机进程中的类装载、内存、垃圾收集、JIT
编译等运⾏数据。
实时监控old区的,快要fullgc时执heap
1 >$jstat$-options
2 -class$显示ClassLoad的相关信息;
3 -gc$显示和gc相关的堆信息;
4 -gcnew$显示新代信息;
5 -gcnewcapacity$显示新代和使情况;
6 -gcold$显示代和永久代的信息;
7 -gcoldcapacity$显示代的;
8 -gcutil $显示垃圾收集信息;
:
重点关注oc和ou
OC:代
OU:代使
MAT介绍
MAT 全称 Eclipse Memory Analysis Tools 是个分析 Java堆数据的专业具,可以计算出内存中对象的实数、占空间
、引关系等,看看是谁阻垃圾收集的回收作,从定位内存泄的原因。
MAT是个基于Eclipse 的内存分析具,是个基础插件。
下载&安装
MAT具的下载地址为: http://www.eclipse.org/mat/downloads.php
MAT插件的下载地址为: http://download.eclipse.org/mat/1.3/update-site