如何在android中查找虚拟地址中的内存泄漏?

时间:2016-10-17 02:24:41

标签: android memory-leaks dalvik

有一个按钮可以在名为MediaCenter.apk的应用中播放视频。最近我们发现每次播放和退出视频。 mediacenter进程的虚拟地址增加了大约5784KB(但物理地址保持不变),因此进程在视频播放器压力测试中崩溃,因为此时虚拟地址不够。我使用命令pmap -x pid来检查mediacenter进程的虚拟内存使用情况,发现增加的5784KB被使用了 /data/dalvik-cache/system@app@MediaCenter.apk@classes.dex

65b29000    5784       8       0       0  r--p  /data/dalvik-cache/system@app@MediaCenter.apk@classes.dex

我发现文件/data/dalvik-cache/system@app@MediaCenter.apk@classes.dex的大小几乎等于5784KB。似乎整个文件都被内存映射到mediacenter进程。但是,如何才能找出文件在进程中的内存映射的哪个阶段?以及如何找到视频播放器退出后未释放虚拟地址的原因?

1 个答案:

答案 0 :(得分:0)

Android hprof工具提供应用进程的内存使用情况。 以下是链接, https://developer.android.com/studio/profile/am-hprof.html

要了解设备允许的最大堆数,请在以下应用程序中添加以下代码。

Runtime.getRuntime().maxMemory();