Eclipse MAT和jvisualvm分析内存溢出

---------------------------------------------mac os版------------------------------------------------------

MAT是内存分析工具

1、下载

http://www.eclipse.org/mat/downloads.php

2、解压后得到

a

 

3、运行并指定需要分析的dump文件,得到eclipse试图

 

4. 核心报表 class histogram

check 是否有超大对象滞留

 

 

--------------------------------------------------------------------------------windows----------------------------------------------------------------------------

 

1、mat 下载地址 https://www.eclipse.org/mat/downloads.php(注意本地jdk是64的就下载64位),下载下来解压就以用,同上macos差不多。

2、 jvisualvm,是jdk自带的,本地的打开本地jdk安装路径  jvisualvm.exe,mac os也可以打开。

 

 

****************************************************************重点如下*************************************************************************************

1、场景概述:内存溢出情况,如何定位去分析(Exception in thread "main"java.lang.OutOfMemoryError: Java heap space)

2、配置你的工程jvm启动参数加入重要参数(-XX:+HeapDumpOnOutOfMemoryError),这个参数配置完成后,系统发生OutOfMemoryError发生时自动生成 Heap Dump 文件,

   然后分析dump文件,Java内存使用情况时,往往是在OOM(OutOfMemoryError)发生时。

 

操作例子如下:

1)创建一个demo工程,加入HeapLeak类

 

2)然后配置你的vm options参数:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\opt\HeapLeak.hprof

  开发环境,测试环境,预发布环境,生产环境(可以在jenkins配置,大家可能没有权限)

  

3)运行结果,当出现内存溢出时,会生成dump文件

4)jvisualvm分析文件(可以是.dump结尾的文件也可以是.hprof的文件),查看概要基本信息中会指出oom的异常问题,

会找到你内存溢出的主因,查看如下:

5)mat分析文件,图中指出区域发生内存溢出的区域,点击details可以查看具体oom

你可能感兴趣的:(技术)