Nar*_*mar 4 android ddms android-ndk android-testing
Android DDMS是否提供API?我需要自动化本机堆的快照机制.或者是否有任何用于分析DDMS本机堆快照的后处理工具.
laa*_*lto 10
我假设你的快照意味着堆转储.
从您的应用代码中,您可以调用Debug.dumpHprofData()转储数据.
从您可以调用的脚本
adb shell am dumpheap <process> <file>
Run Code Online (Sandbox Code Playgroud)
这里<process>是比如你的进程ID或名称,并且<file>是转储文件名.之后,您可以adb pull转储到您的计算机.
要分析堆转储,您可以使用例如jhat或MAT.在此之前,您需要hprof-conv在转储上运行(包含在Android SDK中)以将其从Dalvik格式转换为标准Java格式.
进一步阅读:Android应用程序的内存分析
@ laalto的答案不太正确
在shell中,您可以执行以下操作以使用adb为应用程序获取堆转储.
注意:将19000替换为正在运行的应用程序的进程ID.文件路径必须是您的应用程序在Android设备上具有写入权限的文件路径.
创建堆转储:
adb shell am dumpheap 19000 /sdcard/Documents/android.hprof
将文件
adb pull /sdcard/Documents/android.hprof
拉到您的机器:转换为分析器可读的hprof文件:
hprof-conv android.hprof mat.hprof
提示:获取应用程序的进程ID:
adb shell ps | grep com.sample.application | cut -c10-15
获取进程ID和转储堆:
adb shell am dumpheap `adb shell ps | grep com.sample.application | cut -c10-15` /sdcard/Documents/android.hprof
| 归档时间: |
|
| 查看次数: |
4028 次 |
| 最近记录: |