zoukankan      html  css  js  c++  java
  • MAT插件分析内存泄露

        系统上线后,程序报出out of memory错误。一方面先加大程序运行的内存以解燃眉之急,另一方面希望能有个工具能查出内存泄露的原因。

        通过查阅资料发现了Memory Analyzer这个eclipse插件,下面讲下怎么用。

        首先,获取Heap dump文件。 

    有三种方式:

        1、设置JVM参数,-XX:+HeapDumpOnOutOfMemoryError,在内存溢出的时候就会生成Heap dump文件

        2、使用jmap。(windows可以通过任务管理器查看pid)

    Java5:jmap -heap:format=b <pid>;

    Java6:jmap -dump:format=b,file=HeapDump.bin <pid>

        3、在本机运行java程序的时候,直接通过Memory Analyzer生成Heap dump文件。

     

        其次,安装Memory Analyzer。

    现在已经出1.2.1了,下载地址http://www.eclipse.org/mat/downloads.php

    也可以通过eclipse install new software ,地址http://download.eclipse.org/mat/1.2/update-site/

        安好后就可以开始看问题啦!

    进入后,主页面如下图所示:

     

     

    从上图可以看到它的大部分功能。
         1. Histogram可以列出内存中的对象,对象的个数以及大小。
         2. Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。
         3.Top consumers通过图形列出最大的object。
         4.Leak Suspects通过MA自动分析泄漏的原因。

    这次重点是看Leak Suspects,点开后就能看到

     

     

    点 Detial就能看到实际的一些情况,因为我的错误比较2,所以到这步就能看到原因,fix it!

     

     

  • 相关阅读:
    Oracle Database 11g : SQL 基础
    Idea-Java接入银联支付的Demo
    Linux文件系统挂载管理
    Linux文件系统
    使用fdisk进行磁盘管理
    Vim文本编辑器
    Linux系统常用命令
    Linux系统目录架构
    Linux文件基本操作管理
    Linux文件系统的基本结构
  • 原文地址:https://www.cnblogs.com/ymczxy/p/4723658.html
Copyright © 2011-2022 走看看