安卓应用程序占用大量内存

9
在开发我的Android应用时,我最近查看了任务管理器,以查看我的应用程序正在使用多少内存。
目前,我的应用程序有两个由AdMob服务执行的广告横幅,然后是Google地图的界面片段。除此之外,我还有一个菜单,其中我使用容器在Java代码中添加视图。我更喜欢这种方法而不是列表视图,因为它更轻量级,更容易结构化我想要做的事情,并且我可以在添加/删除视图时使用Android本机动画系统。
被添加到容器中的视图是基于条件的循环结构添加的。界面结构中的视图还使用了一个小型本地可绘制对象的小图像视图。
所有这些东西似乎加起来使我的应用程序占用44.8MB的内存,这与以前的开发数字相比似乎异常高。这也是我第一次决定使用容器通过循环添加视图,而不是使用列表视图方法的适配器。
有人能立刻告诉我为什么我的应用程序会占用这么多内存吗?这是我第一次同时使用所有这些组件:AdMob横幅、Google地图和添加视图的容器。
我的LogCat没有显示任何效率低下的警告。只是好奇是否有任何问题。如果有人有任何想法,我很乐意提供任何源代码。
2个回答

6

我认为44.8Mb对于现代安卓应用来说是相当正常的。我猜测问题出在Google Maps上,因为它是一个非常耗费资源的库(无论是CPU还是内存方面)。不过,你可以尝试逐个移除应用程序中的每个组件,并观察它们如何影响内存占用。


谢谢Andrey!我想我只是有些紧张,因为我还需要实现一个服务,收集大约13个小图标来在应用程序中实现。出于某种原因,我记得读过应用程序不能超过64 MB,但我可能错了。只是想确保我没有超过这个限制。我将尝试删除每个组件,看看是否有任何解决方法。再次感谢。 - Vesica Piscis
1
64Mb 对于一个应用程序来说仍然是正常的内存使用量。您可以使用 getMemoryClass 方法来了解特定设备上的限制。忽略文档中提到的 16Mb,我的应用程序显示,在不同设备上运行 Android 3.0+ 的约 30k 设备中,96Mb 是最受欢迎的内存类别。 - Andrey Chernih

5
如 Andrey 已经说过的那样,44.8Mb 对于 Android 应用程序来说并不算太多。但是您可以使用 DDMS 来跟踪分配和堆更新,以查看到底占用了这些内存。请参见此链接:https://developer.android.com/tools/debugging/debugging-memory.html
此外,我建议您使用带有适配器的 ListView,因为在 ListView 中的项目可以被回收,这可以显著提高性能(请参见教程)。

1
我不知道这个工具!我得利用一下。我是那种反向工程师,所以学习这些新工具总是很有用的!谢谢Rafi! - Vesica Piscis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接