在我们的名为MediaCenter.apk的应用中有一个可以播放视频的按钮。最近,我们发现每次播放和退出视频。mediacenter进程的虚拟地址增加了大约5784KB (但物理地址保持不变),因此该进程在视频播放器压力测试中崩溃,因为此时虚拟地址不够。我使用命令pmap -x pid检查mediacenter进程的虚拟内存使用情况,发现/data/dalvik-cache/system@app@MediaCenter.apk@classes.dex使用了增加的5784KB。
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进程。但是,我如何才能找出文件在进程中的哪个阶段是内存映射的呢?如何查找视频播放器退出后没有释放虚拟地址的原因?
发布于 2016-10-17 11:36:34
Android hprof工具提供了你的应用程序进程的内存使用情况。下面是链接https://developer.android.com/studio/profile/am-hprof.html
要知道你的设备上允许的最大堆大小,可以在yout App中添加以下代码。
Runtime.getRuntime().maxMemory();https://stackoverflow.com/questions/40077645
复制相似问题