Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android应用程序内存使用问题的疑难解答_Android_Memory_Memory Leaks_Ddms - Fatal编程技术网

android应用程序内存使用问题的疑难解答

android应用程序内存使用问题的疑难解答,android,memory,memory-leaks,ddms,Android,Memory,Memory Leaks,Ddms,我想知道如何在Android上解决我的应用程序的高内存使用问题。我在互联网上搜索了一下,发现DDMS插件在为我的应用程序转储内存时非常有用。然而,这是没有用的 Unknown 46352 292 46348 TOTAL 68345 13512 65520 65344 49459 2620 应用程序“Usage Timelines Free”显示使用了94 MBs的内存

我想知道如何在Android上解决我的应用程序的高内存使用问题。我在互联网上搜索了一下,发现DDMS插件在为我的应用程序转储内存时非常有用。然而,这是没有用的

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
应用程序“Usage Timelines Free”显示使用了94 MBs的内存,而DDMS堆转储显示总共8.4 MBs,怀疑泄漏的是资源文件

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
当我从adb(dumpsys meminfo)生成转储时,我得到:

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
其他mmap 41 16 32

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
我怎么知道这巨大的内存消耗背后是什么。我的应用程序是一个永远运行的前台监控服务,有一些活动每天访问几次

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
谢谢

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
DDMS并获得堆内存转储。它只显示使用了8.4 MBs

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
然后,在完成垃圾收集(创建堆转储的净效果)后,只使用8.4MB的堆空间

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
请注意,如果在Android1.x/2.x上运行此操作,MAT将不会报告位图占用的空间。始终尝试从Android 3.0+设备或模拟器转储堆

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
当我从adb(dumpsys meminfo)生成转储时,我得到:

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
我猜你是在安卓1.x/2.x设备或模拟器上运行的,你有很多位图内存。尝试在Android 3.0+环境中运行堆转储和其他测试

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620
另外,请记住,
adb dumpsys meminfo
不会执行完整的垃圾收集,而转储HPROF文件则会执行。Android垃圾收集器经过优化以最小化CPU利用率,因此不会尝试执行完整的垃圾收集。因此,在运行时,堆通常充满垃圾,垃圾将根据需要由GC引擎回收

  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620

您可能还希望阅读。

尽量减少android数据的使用。检查链接:

我已经用过这个。。。DDMS并获得堆内存转储。它只显示使用了8.4 MBs!对不起,我应该提到应用程序正在我的Galaxy Nexus(JB 4.2)上运行。这些结果就是从那里产生的。当你说很多位图mem时,你是指很多位图图像吗?我不。我有几个标志和一些小图标。还有,这个“其他开发”是什么?当我打开“活动”时它会增加,但当我退出它时它不会增加。@Sebouh:那么你的内存使用是完全合理的:Galaxy Nexus上的8MB相当小。“当你说很多位图内存时,你指的是很多位图图像吗?”--不,我指的是很多位图内存。这可能是“很多位图图像”或“一些非常巨大的图像”。“还有,这个“其他开发”是什么?“——很明显,有些东西会懒散地加载到您的流程中,但除此之外,我不知道。谢谢。那么我就不必担心这个时间线应用程序报告的94 MBs了?而且,“未知”记忆是巨大的。。。知道这是怎么回事吗?@Sebouh:“那么我就不必担心这个时间线应用程序报告的94 MBs了?”——因为你无法控制它,而且一些(可能很多)实际上是与其他进程共享的,而不是真正属于你的,所以我不会担心它。担心你的堆;剩下的就是它。“而且,“未知”记忆是巨大的……你知道这是怎么回事吗?”--它是,嗯,未知的。:-)链接已发生变形,现在是“未找到服务器”
  Unknown    46352      292    46348                           

    TOTAL    68345    13512    65520    65344    49459     2620