MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程

转自 http://www.cnblogs.com/nb44c/p/5218880.html

在看深入JVM虚拟机一书(p50,2.4 实战OutOfMemoryError),有一个Java堆溢出的例子,使用到了Eclipse Memory Analyzer插件,由于自己现在使用的是MyEclipse,所以就需要在MyEclipse上添加插件。具体步骤如下:

1.先安装MAT插件

  1. Memory Analyzer 插件下载地址:http://www.eclipse.org/mat/downloads.php

  2. 点击进行下载

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第1张图片

3.将下载的文件解压到MyEclipse的  dropins  文件夹下

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第2张图片

4.创建和文件夹同名的.link文件,文件中的内容就写上对应的地址(地址使用\\ 或者 /)

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第3张图片

5.重启MyEclipse,即可在window---->preferances中看到Memory Analyzer选项。

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第4张图片

 

 

2.使用MAT工具进行分析实例

1.创建测试Java代码

复制代码
/**
 * 

   -verbose:gc -Xms20M -Xmx20M 
   -XX:+HeapDumpOnOutOfMemoryError


 * @author y
 *
 */
public class Test {

    static class OOMObject{
        
    }
    
    public static void main(String[] args) {
        List list = new ArrayList();
        
        while(true){
            list.add(new OOMObject());
        }
    }
   
}
复制代码

 

2.设置运行参数

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第5张图片

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第6张图片

 

 

解释一下参数的意思:

1.Java -verbose:gc 中参数-verbose:gc 表示输出虚拟机中GC的详细情况.

使用后输出如下:

[Full GC 168K->97K(1984K), 0.0253873 secs]

解读如下:

箭头前后的数据168K和97K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有168K-97K=71K的对象容量被回收,括号内的数据1984K为堆内存的总容量,收集所需要的时间是0.0253873秒(这个时间在每次执行的时候会有所不同)

Note:GC会暂用CPU时间片,有可能造成应用程序在某个时刻极短的停顿.

 

2.-Xms :设置堆的最小值, –Xmx :设置堆的最大值  

   在这里将他们都设置为20M,可以避免堆自动扩展。

 

3.通过参数 –XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照以便事后分析。

 

3.运行程序,将会出现如下信息

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第7张图片

这个时候就可以在工程的根目录下找到对应的文件了,然后我们就可以使用MAT工具Dump出来的堆转储快照进行分析。

 

 

3.进行分析

1.直接通过OpenFile将堆转储快照打开

MyEclipse安装Eclipse Memory Analyzer插件,并进行错误文件分析流程_第8张图片

 

2.具体分析参照如下链接:

http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html?ca=drs-

http://essen.iteye.com/blog/1825314

http://tivan.iteye.com/blog/1487855

你可能感兴趣的:(jvm,jvm,java,虚拟机,myeclipse)