Android中MAT使用,解决软件安装中间遇到的问题

124 阅读1分钟

一、生成android的.hprof的方式

1.可以通过Profiler保存

2.通过代码保存。(记的给读写权限)

public static boolean createDumpFile(Context context) {
        String LOG_PATH = "/dump.gc/";
        boolean bool = false;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ssss");//new SimpleDateFormat();
        String createTime = sdf.format(new Date(System.currentTimeMillis()));
        String state = android.os.Environment.getExternalStorageState();
        // 推断SdCard是否存在而且是可用的
        if(android.os.Environment.MEDIA_MOUNTED.equals(state)){
            File file = new File(Environment.getExternalStorageDirectory().getPath() +LOG_PATH);
            if(!file.exists()) {
                file.mkdirs();
            }
            String hprofPath = 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;
    }

3.如果直接使用该.hprof在mat中打开会出现一下问题,所以需要转换一下

image.png

二、把android的.hprof转换成eclipse可用的.hpro的方法

1.先查看你的android sdk下是否有hprof-conv.exe文件

image.png

2.如果没有可以下载一个:download.csdn.net/download/lz…

3.把hprof-conv.exe文件拷贝到tools目录下,执行改程序生成mat直持的.hprof

image.png

三、安装MAT

1.下载地址:download.csdn.net/download/lz…

2.如果出现一下弹窗,说明JDK的版本跟MAT的不一致,需要下载个11版本的JDK

image.png

3.可在oracle官网自行下载:www.oracle.com/java/techno…

懒得注册的可以在这个地址:download.csdn.net/download/lz…

image.png

4.打开MemoryAnalyzer.ini文件按图中把jdk11版本的路径添加进去。查看jdk安装路径: java -verbose

image.png

  -vm
  C:/Program Files/Java/jdk-11.0.11/bin/javaw.exe

image.png

四、导入生成的.hprof文件