使用Eclipse Memory Analyzer进行堆转储文件分析

简介: Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆 转储文件分析工具,可以帮助你发现内存漏洞和减少内存消耗。本文主要介绍如 何安装配置 Memory Analyzer,并结合一个实例,介绍如何利用 MAT 来进行堆转 储文件分析,找到内存泄露的根源。

概述

对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我 们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出 来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运 行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题 提供了重要的依据。

通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进 行。不过,今天我们要介绍的 MAT(Eclipse Memory Analyzer)被认为是一个“ 傻瓜式“的堆转储文件分析工具,你只需要轻轻点击一下鼠标就可以生成一个专 业的分析报告。和其他内存泄露分析工具相比,MAT 的使用非常容易,基本可以 实现一键到位,即使是新手也能够很快上手使用。

MAT 的使用是如此容易,你是不是也很有兴趣来亲自感受下呢,那么第一步我 们先来安装 MAT。

准备环境和测试数据

我们使用的是 Eclipse Memory Analyzer V0.8,Sun JDK 6

安装 MAT

和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的, 也就是说用户不必安装 Eclipse IDE 环境,MAT 作为一个独立的 Eclipse RCP 应用运行;另一种是”集成版“的,也就是说 MAT 也可以作为 Eclipse IDE 的 一部分,和现有的开发平台集成。

集成版的安装需要借助 Update Manager。

如图 1 所示,首先通过 Help -> Software Updates... 启动软件更新管 理向导。

图 1. 安装插件第一步

时间: 2024-10-26 16:55:18

使用Eclipse Memory Analyzer进行堆转储文件分析的相关文章

怎么获得JVM的堆转储文件?

问题描述 我遇到一问题,就是在Eclipse上运行程序内存泄露了,使用的是自己安装的JVM(不是Eclipse自带的). 我现在正采用Eclipse Memory Analyzer 来分析内存泄露的原因,但是在分析前,必须要得到内存泄露一瞬间的堆转储文件. 现在问题是: 1. 怎么获得堆转储文件? 2.生成的文件在哪个目录? 3. 怎么设置JVM的参数,在哪里设置? 4.一个发生内存泄露时,JVM会保存堆转储文件吗?如果保存,会在哪个目录下呢? 问题补充:引用 解决方案 eclipse -> r

性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)

[本文转载于性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)] 前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的.所以找出是什么原因造成OutOfMemoryError非常重要.现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题.如未说明,本文均使用Java 5.0 on Windows XP SP3环境.   为什么

Eclipse Memory Analyzer 安装(Update Site: http://download.eclipse.org/mat/1.3.1/update-site/ )

安装 Memory Analyzer 1>下载 http://www.eclipse.org/mat/downloads.php 2>安装 获得堆转储文件 //查看 tomcat  pid     ps -elf|grep tomcat // return 5183 // jmap 位于 java_home/bin/目录 jmap -dump:format=b,file=heap.bin   5183 查看heap.bin文件 Eclise --> Eclipse==>Open F

Eclipse Memory Analyzer以及内存泄露的原因

Eclipse Memory Analyzer是一个非常棒的堆内存分析工具,是JDK自带的堆分析工具jhat的一个非常好的替代品,能够快速地定位Java内存泄露的原因.       可能有的同学会问,JVM不是号称自动内存管理,GC会自动垃圾回收,Java怎么会有内存泄露,不会搞错吧?当然不会^_^, Java的内存泄露不同于C/C++的内存泄露,C/C++的内存泄露是由于使用了堆内存(new/malloc)却没有释放(delete/free),导致无法再使用到该内存片,而Java的内存泄露是无

MAT Memory Analyzer Tool 插件包离线安装(图解)

[本文转载于MAT Memory Analyzer Tool 插件安装(图解)] 前段时间做了一个项目,Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 出现这个错误,所以需要查找原因,所以就用到这个工具,安装比较麻烦,贴出来和大家共享一下: 第一步:下载Eclipse MAT 下载地址:http://www.eclipse.org/mat/downloads.php 第二步:下载之后将压缩包解

如何使用crash工具分析Linux内核崩溃转储文件

本文首先介绍了 crash 的基本概念和安装方法,其次详细介绍了如何使用 crash 工具分析内核崩溃转储文件,包括各种常用调试命令的使用方法,最后以几个实际工作中遇到的真实案例向读者展示了 crash 的强大功能.在这篇文章中,既有详细的工具使用方法,又有丰富的实际http://www.aliyun.com/zixun/aggregation/7734.html">案例分析,相信您读过以后定会受益匪浅. 什么是 crash 如前文所述,当 linux 系统内核发生崩溃的时候,可以通过 k

利用Memory Dump Diagnostic for Java (MDD4J)分析内存管理问题

简介 这一部分是 Java 内存转储诊断 (MDD4J) 故障排除工具的简介,这种工具可帮助您分析 Java 堆,从而诊断内存占用问题.MDD4J 的分析结果在报告中提供,此报告汇总了应用程序使用 Java 堆的情况. 共有三种适合使用 MDD4J 提供帮助的场景: 内存泄漏:如果应用程序出现 java.lang.OutOfMemoryError 异常,或者详细的垃圾收集数据显示内存消耗逐渐增加,那么 MDD4J 可以指出造成此类增加的数据结构以及这些数据结构内的组件. 过度的内存消耗:如果一个

使用Memory Analyzer tool(MAT)分析内存泄漏(二)

[本文转载于使用Memory Analyzer tool(MAT)分析内存泄漏(二)] 前言 在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果.在本文中,将介绍MAT如何根据heap dump分析泄漏根源.由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三.一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defineClass方法告诉系统把

[20161228]sql语句父子游标的堆转储2.txt

[20161228]sql语句父子游标的堆转储2.txt --以前仅仅看了父游标堆0的堆转储,链接:http://blog.itpub.net/267265/viewspace-2076605/ --尽然当时没有做子游标堆0,6的堆转储,今天测试看看. 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -----------