zoukankan      html  css  js  c++  java
  • eclipse配置和使用memory Analyse分析内存


    1. 安装

      在Eclipse help -> Eclipse Marketplace下搜索Memory: 
    搜索MAT插件

    图 1-1 搜索MAT插件

      按照步骤安装完成重启即可。

    2. 测试代码准备

    测试代码

    /**
     * 
     * @description HeapOOM
     * <p>Java堆异常测试</p>
     * <code>VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError</code>
     * <p>以上参数的含义是:限制Java堆大小为20MB,不可扩展</p>
     * <p>通过此参数可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照</p>
     * @author Yampery
     * @date 2017年6月16日 下午11:42:46
     */
    public class HeapOOM {
    
        static class OOMObject { }
    
        public static void main(String[] args) {
    
            List<OOMObject> list = new ArrayList<OOMObject>();
            while (true) {
                list.add(new OOMObject());
            } /// while end
        } /// main
    } ///~
    
    /**
     * 运行结果:
     * java.lang.OutOfMemoryError: Java heap space
     * Dumping heap to E:jobjava_pid4056.hprof ...
     * Heap dump file created [28010445 bytes in 0.373 secs]
     * Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
     */

    3. Eclipse中的运行参数设置

    -Dfile.encoding=UTF-8    
    -Xms20m -Xmx20m ##设置堆大小20m,并将最小和最大值设置相等,避免扩展
    -XX:+HeapDumpOnOutOfMemoryError ##dump出当前的内存堆转储快照
    -XX:HeapDumpPath=E:job   ##指定路径(转储文件还是挺大的)
    -XX:SurvivorRatio=8    ## 存活比2:8

    运行参数

    图2-1 eclipse运行参数设置

     

    4.运行测试代码

    通过上述可以看见堆转储快照文件是.hprof 文件。 

    5. 打开堆转储快照

      
    打开MAT 
    打开界面

    图 3-1 设置界面显示MAT

    打开dump

    图 3-2 打开或获取dump

    打开dump文件 
      默认打开Leak Memory(泄漏) 
    这里写图片描述

    图 3-3 dump文件

  • 相关阅读:
    mybatis的mapper特殊字符转移以及动态SQL条件查询
    MySQL查询结果集字符串操作之多行合并与单行分割
    MySQL查询之内连接,外连接查询场景的区别与不同
    SpringBoot异步使用@Async原理及线程池配置
    SpringBoot 属性配置文件数据注入配置和yml与properties区别
    MySQL实战45讲第33讲
    Beta冲刺第1次
    Beta冲刺第5次
    Beta冲刺第4次
    Beta冲刺第3次
  • 原文地址:https://www.cnblogs.com/zhulibin2012/p/8938597.html
Copyright © 2011-2022 走看看