android确定GC释放对象

时间:2010-11-03 05:44:13

标签: android garbage-collection

我的Android应用程序性能很低。从logcat我发现耗时因素是垃圾收集。它在每个gc中消耗至少110ms。 gc经常出现。反正有没有确定收集的对象?

3 个答案:

答案 0 :(得分:2)

在DDMS工具中,转到“分配跟踪器”选项卡。从列表中选择您的应用,然后单击“开始跟踪”。使用该应用程序后,选择“获取分配”。

这将显示512个最新分配的列表,包括大小和堆栈跟踪。从这个你应该能够分辨出吃什么记忆并导致GC。

答案 1 :(得分:1)

对于Android GC来说,这不是一个奇怪的值。 ~100ms和~500K值相当平均,但这取决于项目规格。实际问题在于代码导致G​​C被调用的频率。

以下是一个示例:如果您通过ListView和某些自定义Adapters实施列表,那么您可能会获得有史以来最差的性能和最佳性能,具体取决于您为其编写代码的方式。如果您没有优化列表并创建新视图(通过从.xml文件中扩充它),您将经常进行GC调用,这被视为UI中的小型hickup或挂起。

确定导致GC问题的原因的最佳方法是对其进行本地化。启动您的应用程序并一次使用它一部分,同时监控GC gps的DDMS,然后查看哪个元素或活动导致其中的大部分,并从那里开始。

还可以使用某些工具尝试内存使用情况监控。例如,如果您正在使用Eclipse,那么有一个名为MAT的工具可以让您更深入地了解整个项目中的对象使用情况。

答案 2 :(得分:1)

查看http://developer.android.com/videos/index.html

中的视频

特别是那个谈论“让你的用户界面更快”的人,视频中有很多设计最佳实践。

它肯定会帮助您的应用程序更快地运行。