[Android]生成heap dump文件(.hprof)

Android生成heap dump文件(.hprof)

一个heap dump就是一个程序heap的快照,可以获知程序的哪些部分正在使用大部分的内存。

它保存为一种叫做HPROF的二进制格式。对于Android执行android.os.Debug.dumpHprofData(hprofPath)方法后所生成的文件,需要把.hprof文件从Dalvik格式转换成J2SE HPROF格式。使用AndroidSDK提供的hprof-conv工具可执行该转换操作。

hprof-conv dump.hprof converted-dump.hprof

本文属sodino原创,发表于博客:http://blog.csdn.net/sodino,转载请注明出处。

相关代码可以从QQ群Code2Share(363267446)中的群文件中下载。

Android代码生成dump文件如下:

    public static boolean createDumpFile(Contextcontext) {
        StringLOG_PATH = "/dump.gc/";
        boolean bool = false;
        SimpleDateFormatsdf = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ssss");
        StringcreateTime = sdf.format(new Date(System.currentTimeMillis()));
        Stringstate = android.os.Environment.getExternalStorageState();
        // 判断SdCard是否存在并且是可用的
        if(android.os.Environment.MEDIA_MOUNTED.equals(state)){
            Filefile = new File(Environment.getExternalStorageDirectory().getPath() +LOG_PATH);
            if(!file.exists()) {
                file.mkdirs();
            }
            StringhprofPath = file.getAbsolutePath();
            if(!hprofPath.endsWith("/")) {
                hprofPath+= "/";
            }              

            hprofPath+= createTime + ".hprof";
            try {
                android.os.Debug.dumpHprofData(hprofPath);
                bool= true;
                Log.d("ANDROID_LAB", "create dumpfile done!");
            }catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            bool= false;
            Log.d("ANDROID_LAB", "nosdcard!");
        }

        return bool;
    }

不要忘记了在AndroidManifest.xml中声明SDCard写权限:

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />

[Android]生成heap dump文件(.hprof)

时间: 2024-10-11 01:38:04

[Android]生成heap dump文件(.hprof)的相关文章

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

使用MAT比較多个heap dump文件 调试内存泄露时,有时候适时比較2个或多个heap dump文件是非常实用的.这时须要生成多个单独的HPROF文件. 以下是一些关于怎样在MAT里比較多个heap dumps的内容(有一点复杂): 1.     第一个HPROF 文件(usingFile > Open Heap Dump ). 2.     打开Histogram view. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29kaW5v/fon

[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里 (如果看不

linux下生成core dump文件方法及设置

core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are usually dumped at the s

dotnet core调试docker下生成的dump文件

最近公司预生产环境的docker容器经常出现内存暴涨现象,有时会突然吃掉几个G,触发监控预警,造成容器重启. 分析了各种可能原因,修复了可能发生的内存泄露,经测试本地正常,但是发到预生产还是会有内存暴涨现象,反而更改GC模式后内存使用保持较低水平,百思不得其解,所以想到使用调试dump文件方式来分析应用内存状况. 环境: lldb:3.9 dotnetcore:2.1.6 docker image:microsoft/dotnet:2.1.6-aspnetcore-runtime (根据文档,d

Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 (需要在运行时生成core dump文件,QMAKE_CC += -g)

记录一下 Ubuntu16.04下写的Qt程序,调试时没问题,运行时偶现崩溃 需要在运行时生成core dump文件 首先在pro结尾里加入 QMAKE_CC += -g QMAKE_CXX += -g QMAKE_LINK += -g 在终端输入 ulimit -c 显示为 0 然后输入 ulimit -c unlimited 继续在终端运行编写的程序 出错后,会在当前目录生成 core 文件 然后在终端执行 “gdb 你的程序名 core” 然后输入 bt 对该错误进行跟踪调试 (gdb)

生成heap dump

在查看内存泄露以及对内存问题中,要dump出当前内存堆存储快照,便于分析.有几种方法可以做,简介如下 一.intellij IDEA   由于我用的是intellij IDEA,所以没有介绍Eclipse的配置,当然网上有很多种. 1.run->EditConfigurations 2.配置VM options,这里设置为JVM在遇到OOM(OutOfMemoryError)时生成Dump文件,-XX:+HeapDumpOnOutOfMemoryError  ,当然也可以设置dump出的文件路径

Java Heap dump文件分析工具jhat简介

jhat 是Java堆分析工具(Java heap Analyzes Tool). 在JDK6u7之后成为标配. 使用该命令需要有一定的Java开发经验,官方不对此工具提供技术支持和客户服务. 用法: jhat [ options ] heap-dump-file 参数: options 可选命令行参数,请参考下面的 Options heap-dump-file 要查看的二进制Java堆转储文件(Java binary heap dump file). 如果某个转储文件中包含了多份 heap d

linux下生成core dump文件方法及设置【转】

转自:http://blog.csdn.net/mrjy1475726263/article/details/44116289 源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has te

Linux下如何生成core dump 文件

Linux下的C程序常常会因为内存访问等原因造成segment fault(段错误),如果此时core dump 的功能是打开的,在运行我们的可执行程序时就会生成一个名为core的文件,然后我们就可以用gdb对core文件来进行调式,还原发生错误的堆栈情况,这对于我们调试bug非常有帮助. 1. 使用  ulimit -a 可以察看当前系统core文件的大小限制: 使用  ulimit -c [kbytes] 可以设置系统允许生成的core文件大小. 如: ulimit -c 0     ---