eclipse java MemoryAnalyzer 查询内存泄漏 环境配置

简单记录下java用MemoryAnalyzer分析内存泄漏问题!

首先,内存不足的时候,会报错 Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded类似的错误!

这时候会生成java_pid3708.hprof类似的文件,这个文件就是MemoryAnalyzer需要分析的文件!

写个例子,快速生成这个文件!

 1 public class TestMain {
 2
 3     public static void main(String[] args) {
 4
 5         List<TestMain> ary =new ArrayList<TestMain>();
 6         while(true){
 7             ary.add(new TestMain());
 8         }
 9
10     }
11
12 }

运行配置:

等一会就会出现如下

java.lang.OutOfMemoryError: GC overhead limit exceeded
Dumping heap to java_pid10996.hprof ...
Heap dump file created [780500156 bytes in 3.037 secs]
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
。。。。。

此时去工程根目录下查找*.hprof的文件

下载 MemoryAnalyzer-1.8.1.20180910-win32.win32.x86_64.zip  地址:https://www.eclipse.org/mat/downloads.php

当然,根据你的环境不同自行选择版本!

下载后直接解压,发现 MemoryAnalyzer.exe 和 MemoryAnalyzer.ini

直接运行MemoryAnalyzer.exe载入hprof文件!至于如何分析,自己慢慢学吧,我这里仅做记录!

出问题看这里:应该就是mat的运行内存不够,hprof太大造成的

为了更有效率的使用 MAT,我们可以配置一些环境参数。因为通常而言,分析一个堆转储文件需要消耗很多的堆空间,为了保证分析的效率和性能,在有条件的情况下,我们会建议分配给 MAT 尽可能多的内存资源。你可以采用如下两种方式来分配内存更多的内存资源给 MAT。

一种是修改启动参数 MemoryAnalyzer.exe-vmargs -Xmx4g

另一种是编辑文件 MemoryAnalyzer.ini,在里面添加类似信息 -vmargs– Xmx4g。

说明:

1. MemoryAnalyzer.ini中的参数一般默认为-vmargs– Xmx1024m,这就够用了。假如你机器的内存不大,改大该参数的值,会导致MemoryAnalyzer启动时,报错:Failed to create the Java Virtual Machine。

2.当你导出的dump文件的大小大于你配置的1024m(说明1中,提到的配置:-vmargs– Xmx1024m),MAT输出分析报告的时候,会报错:An internal error occurred during: "Parsing heap dump from XXX”。适当调大说明1中的参数即可。

原文地址:https://www.cnblogs.com/ruber/p/10289185.html

时间: 2024-11-10 18:15:31

eclipse java MemoryAnalyzer 查询内存泄漏 环境配置的相关文章

win7+64位+Java学习基本软件安装+环境配置+eclipse(IDE)

一.下载安装JDK 1.安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html 根据需要进行下载,我的电脑是win7+64位,所以选择版本:jdk-9.0.1_windows-x64_bin.exe 2.双击安装包 ,点击下一步,建议不要装在C盘,我一般习惯性将所有软件装在E盘下面,首先是安装JDK: 3.继续点击下一步,安装完jdk-9.0.1,会自动安装jre-9.

Eclipse C/C++和MinGW开发环境配置

逐渐感到Python的速度无法满足需求,所以开始重新学习C/C++.第一步当然就是IDE环境配置,一直觉得Eclipse不错,界面很舒服!但是配置IDE一身冷汗!不知道出了什么问题,感觉还是原来用的VC6.0无脑比较好!出了问题就得解决,各种百度(吐槽下,谷歌都不能用了!)无果,各种错误,一度怀疑自己怎么变得这么低能了.所幸一个下午的折腾,中间等待下载看了场电影,终于搞定!略羞涩 JDK安装与配置 首先还是下载: 下载对应版本!无脑安装! 环境变量配置: 计算机>>属性>>高级系统

Android + Eclipse + PhoneGap 3.4 安卓最新环境配置,部分资料整合网上资料,已成功安装.

前言:广州花都论坛,打算推出本地服务o2o应用.快速开发手机应用,phonegap 我的小站,http://www.w30.cn/ 如果有什么问题也可以到小组留言,可以的话,贡献一个ip:) phonegap小组 http://www.w30.cn/go/w30 如果有什么问题也可以加入我们的QQ群:64674997 下面是我的安装过程 环境搭建首先要去下载一些安装包: (下载前注意一下,电脑是32位还是64位的请注意选择安装包) java环境的JDK:http://www.oracle.com

java在window系统安装及环境配置

java在window系统安装及环境配置 在blog中将为大家介绍如何搭建Java开发环境. 一.下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,点击如下下载按钮: 在下载页面中你需要选择接受许可,并根据自己的系统选择对应的版本,本文以 Window 64位系统为例: 二.安装JDK 双击安装文件,全部都默认下一步就行. 三.配置环境变量 1.安装

Java中的内存泄漏

[转]介绍Java中的内存泄漏 1. 什么是内存泄漏? 内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着. 要想理解这个定义,我们需要先了解一下对象在内存中的状态.下面的这张图就解释了什么是无用对象以及什么是未被引用对象. 2. 为什么会发生内存泄漏? 来先看看下面的例子,为什么会发生内存泄漏.下面这个例子中,A对象引用B对象,A对象的生命周期(t1-t4)比B对象的生命周期(t2-t3)长的多.当B对象没有被应用程序使用之后,A对象仍然在引用着B对象.

Java中关于内存泄漏出现的原因以及如何避免内存泄漏(超详细版)

Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题.内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个或某些实例所持有却不再被使用导致 GC 不能回收.最近自己阅读了大量相关的文档资料,打算做个 总结 沉淀下来跟大家一起分享和学习,也给自己一个警示,以后 coding 时怎么避免这些情况,提高应用的体验和质量. 我会从 java 内存泄漏的基础知识开始,并通过具体例子来说明 Android 引起内存泄漏的各种原因,以

Core Java 学习笔记——1.术语 环境配置/Eclipse汉化字体快捷键/API文档

今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本书的整个过程记录下来. I want to put a ding in the universe. 基本术语:       Object Oriented Programming——OOP——面向对象编程 Application Programming Interface——API——应用程序编程接

如何识别Java中的内存泄漏

内存泄漏的识别 在将程序部署到生产环境之前检查一下是否存在内存泄漏的问题是很有必要的.这里可以通过垃圾收集器的指标来进行初步的判断. 如GC后内存使用仍然持续上升,那么就可能有内存泄漏的问题,比如上面的这幅图,代码可以查看GitHub(https://gist.github.com/dpryden/b2bb29ee2d146901b4ae).不过在现实中内存像图上一样线性增加的可能性是很小的,见图Old Gen,而GC suspension times或者Eden Space和Survivor空

使用Eclipse Memory Analyzer进行内存泄漏分析三部曲

源地址:http://seanhe.iteye.com/blog/898277 一.准备工作 分析较大的dump文件(根据我自己的经验2G以上的dump文件就需要使用以下介绍的方法,不然mat会出现oom)需要调整虚拟机参数 找个64位的系统在MemoryAnalyzer.ini设置-Xmx2g 如果是32位的xp可以使用下面的方法进行尝试: 安装jrockit 6.0的JDK mat使用jrockit的jdk来启动 Java代码   -vm D:/Program Files/Java/jroc