Eclipse MAT和jvisualvm分析内存溢出
---------------------------------------------mac os版------------------------------------------------------
MAT是内存分析工具
1、下载
http://www.eclipse.org/mat/downloads.php
MAC的下载地址
2、解压后得到
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
补充版:
JProfiler 内存分析
下载地址:https://www.ej-technologies.com/products/jprofiler/overview.html
把dump 根式文件后缀修改为 hprof 并打开
打开 biggest Object 并且 点检show in graph