Eclipse - Memory Analyzer

来源:互联网 发布:淘宝福利群真的假的 编辑:程序博客网 时间:2024/06/05 04:16

概述

Eclipse官方的插件
地址:http://www.eclipse.org/mat/downloads.php
使用网站上的这个站点在线安装:http://download.eclipse.org/mat/1.5/update-site/

使用实例

术语约定

mat : 代表Memory Analyzer ToolOOM : OutOfMemoryError

1. 准备jvm参数

  1. 首先为了防止内存dump太大需要限制heap的大小,因为如果heap为2G那么dump出来的hprof文件也有2G~~~

    -Xms20m heap最小20-Xmx20m heap最大20
  2. 然后继续设置参数时虚拟机发生heapOOM时把内存快照dump出来。hprof为其后缀名。

    -XX:+HeapDumpOnOutOfMemoryError

2. 操作

  1. 一段保证CG Roots到对象可达的代码

    static class OOMObject{}public static void main(String[] args) {    List<OOMObject> list = new ArrayList<OOMObject>();    while (true) {        list.add(new OOMObject());    }}
  2. 程序运行结束后console输出

    java.lang.OutOfMemoryError: Java heap spaceDumping heap to java_pid8464.hprof ...Heap dump file created [27967716 bytes in 0.096 secs]Exception in thread "main" java.lang.OutOfMemoryError: Java heap space    at java.util.Arrays.copyOf(Arrays.java:2245)    at java.util.Arrays.copyOf(Arrays.java:2219)    at java.util.ArrayList.grow(ArrayList.java:242)    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)    at java.util.ArrayList.add(ArrayList.java:440)    at com.ddup.jvm.HeapMemoryLeak.main(HeapMemoryLeak.java:15)
  3. Eclipse中mat操作

    1. 打开Memory Analysis视图。2. 选择左上角Open Heap Dump,然后选择刚刚项目根目录下的java_pid****.hprof文件

3. 分析

分析日后再说吧...
1 0
原创粉丝点击