实现将内存切片保存位本地文件中。
文中仅提供实现的方法,不考虑其他外部因素。
fun dump(): Boolean { // 文件夹名 val logPathDir = "/dump.mat/" var bool = false; // 文件名 val sdf = SimpleDateFormat("yyyyMMdd-HHmm.sss") val createTime = sdf.format(Date()) val state = Environment.getExternalStorageState() if (Environment.MEDIA_MOUNTED == state) { val file = File("${Environment.getExternalStorageDirectory().path}${logPathDir}") if (!file.exists()) { file.mkdirs() } var hprofPath = file.absolutePath if (!hprofPath.endsWith("/")) { hprofPath = "${hprofPath}/" } // 文件绝对地址,补全后缀 hprofPath = "${hprofPath}${createTime}.hprof" try { android.os.Debug.dumpHprofData(hprofPath) bool = true } catch (e: IOException) { e.printStackTrace() } } return bool }
如果需要本地查看,需要进行转化
hprof-conv.exe <src> <dst>