一、生成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中打开会出现一下问题,所以需要转换一下
二、把android的.hprof转换成eclipse可用的.hpro的方法
1.先查看你的android sdk下是否有hprof-conv.exe文件
2.如果没有可以下载一个:download.csdn.net/download/lz…
3.把hprof-conv.exe文件拷贝到tools目录下,执行改程序生成mat直持的.hprof
三、安装MAT
1.下载地址:download.csdn.net/download/lz…
2.如果出现一下弹窗,说明JDK的版本跟MAT的不一致,需要下载个11版本的JDK
3.可在oracle官网自行下载:www.oracle.com/java/techno…
懒得注册的可以在这个地址:download.csdn.net/download/lz…
4.打开MemoryAnalyzer.ini文件按图中把jdk11版本的路径添加进去。查看jdk安装路径: java -verbose
-vm
C:/Program Files/Java/jdk-11.0.11/bin/javaw.exe