如何打开hprof文件

最近学习深入java虚拟机的书,照着里面的例子跑了下。

下面是demo:

/**
 * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
 * @author zzm
 */
public class HeapOOM {

    static class OOMObject {
    }

    public static void main(String[] args) {
        List<OOMObject> list = new ArrayList<OOMObject>();

        while (true) {
            list.add(new OOMObject());
        }
    }
}

程序执行效果:

我这边产生的hprof文件路径:

E:\IdeaProjects\java-virtual\java_pid2432.hprof

打开这种文件的话,可以使用如下的软件:

Memory Analyzer

官网:http://www.eclipse.org/mat/downloads.php

双击打开,装载对应的hprof即可。

时间: 2024-10-15 07:03:02

如何打开hprof文件的相关文章

jprofile查看hprof文件[转]

用jprofile打开hprof文件,查看内存泄露情况,有几个常用的功能说明一下: 工具下载:到官网下载jprofile7.0.1 64位的.再申请一个注册号,注册号的申请好像是一个邮件只能用一次. 1.打开hprof文件:进入classes视图,根据(instance count和Size)基本可以确定哪个类的对象出现问题.比如(java.util.LinkedList$Entry类有2731062个实例). 2.根据常识,应该java.util.LinkedList类有个对象的Size应该很

java命令导出内存溢出(HeapDumpOnOutOfMemoryError)的堆信息(hprof文件)

当出现HeapDumpOnOutOfMemoryError错误时,我们需要分析原因,下面的程序就是模拟这个错误并导出dump文件,好让你分析 GcTest.java package gc; public class GcTest { private static final int _1MB= 1024 * 1024; //约1m public static void main(String[] args) { //总共约8m多,堆大小设置不超过8388608B即8.388608m就会内存溢出,

android内存泄漏系列- 分析hprof文件

转载请注明出处 http://www.cnblogs.com/weiwangnuanyang/p/5703702.html ,谢谢. 如果只是想确定一下某一个场景是否有内存泄漏,AndroidStadio的控制台就有一个好工具,反复操作观察曲线是否上扬,如果曲线上扬则说明内存泄漏 但是,上面的工具不够强大,不能看出内存中驻留的具体的类和类的引用关系. 下面就来重点介绍一下,解决android内存泄漏必备利器-Memory Analysis; 具体安装方式请移步度娘. 我们这里重点介绍如何利用Me

【原创】android内存管理-hprof文件

转载请注明出处 http://www.cnblogs.com/weiwangnuanyang/p/5703702.html 如果只是想确定一下某一个场景是否有内存泄漏,AndroidStadio的控制台就有一个好工具,反复操作观察曲线是否上扬,如果曲线上扬则说明内存泄漏 点击旁边第三个按钮也可以生成hprof文件.不过本人比较习惯用Eclipse,这里就以Eclipse为例啦. 下面就来重点介绍一下如何利用Memory Analysis(Eclipse的一个插件,具体安装方式请移步度娘)  生成

Linux打开txt文件乱码的解决方法

Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb18030.因此,解决Linux打开txt文件中文乱码可有如下两种方法. 方法一: 在附件终端中,进入到txt文件所在目录,使用命令符"iconv-f gb18030  -t utf8 1.txt -o 2.txt"把gb18030编码的1.txt转换成utf8的2.txt.这样2.txt就成为Linux支持的编码. 方法二: 在附件

emacs使用本地emacs server模式打开远程文件

使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下: C-x C-f /remotehost:filename RET (or /method:[email protected]:filename) 但,这样打开有点麻烦,你必要输入username和机器ip等 emacs提供了一种client/server的模式,当我们在本地打开一个emacs,能够将它作为server执行 然后,在本地机器的其它都方要用emacs的时候,如在terminal中要

打开cad文件的几种方法

转自原文 打开cad文件的几种方法 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureLayer pFeatureLayer; IFeatureDataset pFeatureDataset; //打开CAD数据集 pWorkspaceFactory = new CadWorkspaceFactoryClass(); pFeatureWorkspace = (IFeatureWork

无法打开物理文件 操作系统错误 5:拒绝访问 SQL Sever

今天分离附加数据库,分离出去然后再附加,没有问题.但是一把.mdf文件拷到其它文件夹下就出错,错误如下:    无法打开物理文件 "E:\db\homework.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120) 问了下朋友,朋友说找到.mdf文件改文件的安全权限. 搞了半天才明白,原来是找到.mdf文件,右键->属性->安全->选择当前用户->编辑->完全控制. 如果还出

fopen(),fclose() 打开/关闭文件

打开/关闭/刷新流 1. fopen() 打开流 功能: 1)fopen()打开由 path指定的一个文件. 2)fdopen()获取一个先有的文件描述符,并使一个标准的I/O流与该描述相结合.此函数常用于由创建管道和网络通信函数小所返回的描述符.因为这些特殊类型的文件不能用标准I/O fopen函数打开,我们必须先调用设备专用函数以获得一个文件描述符,然后用fopen使一个标准I/O流与该描述符相关联. 3)fropen()在一个指定的流上打开一个指定的文件,如若该流已经打开,则先关闭该流.若