eclipse MAT分析heap dump

官方参考文档:http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Ftasks%2Fanalyzingthreads.html

代码


/**

 * -XX:+PrintGC -Xloggc:gc.log

 * 

 * VM args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

 */

public class HeapOOM {

	

	static class OOMObject {

	}

 

	public static void main(String[] args) throws InterruptedException {

		List<OOMObject> list = new ArrayList<>();

		

		while(true){

			list.add(new OOMObject());

//			System.out.println("sleep");

//			Thread.sleep(1000l);

		}

 

}

左方为控制台输出,右方为heap dump分析中线程信息。

图二

图三


OQL实例

SELECT s.size, s.modCount FROM OBJECTS 258211 s

图四:结果

时间: 2024-10-23 21:57:25

eclipse MAT分析heap dump的相关文章

MAT分析JVM DUMP时的两个时常被错误理解的误区

Shallow中的数据并不是有多少,占多少.而是在64位JVM DUMP中16个字节起步,然后8个字节的倍数增加,你会发现1个byte字段和2个byte字段都是站16个字节,到5个byte字段时占24个字节,其中16个字节起步中还有隐藏的占用开销.这么做是为了字节对齐,64位下是8字节的倍数,32位下是4字节的倍数.这也引入一个问题,一个int在32位和在64位下分别占用多少内存.我倾向于基础类型占用字节数都是一定的,但是如果需要字节对齐时,会有冗余的空间,这部分冗余空间不会算在基础类型上,而是

学习jvm,关于MAT an internal error occurred during:&quot;Parsing heap dump&quot; from问题

写了一个死循环不断的创建对象,模拟内存溢出 1 package com.zuo.test1; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class Main { 7 8 public static void main(String[] args) { 9 List<Demo> demos=new ArrayList<>(); 10 while(true){ 11 demos.add(new

使用MAT分析Java内存

Overview MAT(Memory Analyzer Tool) 是一个JAVA Heaper分析器,可以用来分析内存泄露和减少内存消耗.分析Process showmap中的/dev/ashmem/dalvik-heap(deleted)一项所占用的Memory.可以参考我写的使用showmap分析系统内存占用情况一文. 下面就将一下如何使用Eclipse MAT分析Android应用程序内存的消耗.所需要的是已经安装ADT和SDK的Eclipse.然后可以在http://www.ecli

转:Java - Heap Dump, Thread Dump and Core Dump

Dump 就是对程序运行时内存上的信息进行转储, 让我们可以查看程序当时的运行情况. Dump 对于调优和排错是非常有用的工具. Heap Dump Java 运行时对象分配在堆内存上, Heap dump 就是对堆内存进行转储. 生成 Heap dump 的生成有两种方式: 1) 运行 Java 程序时添加 -XX:+HeapDumpOnOutOfMemoryError 选项, 这样当程序发生 Out of Memory 错误时就会自动生成一份 Heap dump. 2) 使用 jmap 工具

Eclipse MAT: Understand Incoming and Outgoing References

引用:http://xmlandmore.blogspot.hk/2014/01/eclipse-mat-understand-incoming-and.html?utm_source=tuicool&utm_medium=referral Saturday, January 25, 2014 Eclipse MAT: Understand Incoming and Outgoing References In [1], we have shown how to use OQL to query

使用AndroidStudio dump heap,再用 Eclipse MAT插件分析内存泄露

1.eclipse mat插件的安装 Help->Install new software,如下图,一直下一步即可 2.AndroidStudio dump heap 3.AndroidStudio 点captures查看dump 文件 4.导出为标准的dump文件 5.eclipse 打开mat,并导入4导出的文件 file->open file 选择即可 6.OQL查找Activity内存泄露 select * from instanceof android.app.Activity 再右

在Eclipse中使用MAT分析Android程序内存使用状况(转)

对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现.通常分析程序中潜在内存泄露的问题是一件很有难度的工作,一般都是由团队中的资深工程师负责,而且随着程序代码量的提高,难度还会逐步加大. 今天要介绍一个在Eclipse中使用的内存分析工具——MAT(Eclipse Memory Analyzer,主页在http://www.eclipse.org/mat/).它是一个功能非常丰富的J

Eclipse MAT内存分析工具(Memory Analyzer Tool)

MAT内存分析工具 MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分析工具.读者可以在http://www.eclipse.org/mat/下载并使用MAT. 1 初识MAT 在分析堆快照前,首先需要导出应用程序的堆快照.在本书前文中提到的jmap.JConsole和Visual VM等工具都可用于获得Java应用程序的堆快照文件.此外,MAT本身也具有这个功能.

[MAT]使用MAT比较多个heap dump文件

使用MAT比较多个heap dump文件 调试内存泄露时,有时候适时比较2个或多个heap dump文件是很有用的.这时需要生成多个单独的HPROF文件. 下面是一些关于如何在MAT里比较多个heap dumps的内容(有一点复杂): 1.     第一个HPROF 文件(usingFile > Open Heap Dump ). 2.     打开Histogram view. 图1. Histogram View按钮 3.     在NavigationHistory view里 (如果看不