我的Android应用程序性能很低。从logcat我发现耗时因素是垃圾收集。它在每个gc中消耗至少110ms。 gc经常出现。反正有没有确定收集的对象?
答案 0 :(得分:2)
在DDMS工具中,转到“分配跟踪器”选项卡。从列表中选择您的应用,然后单击“开始跟踪”。使用该应用程序后,选择“获取分配”。
这将显示512个最新分配的列表,包括大小和堆栈跟踪。从这个你应该能够分辨出吃什么记忆并导致GC。
答案 1 :(得分:1)
对于Android GC来说,这不是一个奇怪的值。 ~100ms和~500K值相当平均,但这取决于项目规格。实际问题在于代码导致GC被调用的频率。
以下是一个示例:如果您通过ListView
和某些自定义Adapters
实施列表,那么您可能会获得有史以来最差的性能和最佳性能,具体取决于您为其编写代码的方式。如果您没有优化列表并创建新视图(通过从.xml
文件中扩充它),您将经常进行GC调用,这被视为UI中的小型hickup或挂起。
确定导致GC问题的原因的最佳方法是对其进行本地化。启动您的应用程序并一次使用它一部分,同时监控GC gps的DDMS,然后查看哪个元素或活动导致其中的大部分,并从那里开始。
还可以使用某些工具尝试内存使用情况监控。例如,如果您正在使用Eclipse,那么有一个名为MAT的工具可以让您更深入地了解整个项目中的对象使用情况。
答案 2 :(得分:1)
查看http://developer.android.com/videos/index.html
中的视频特别是那个谈论“让你的用户界面更快”的人,视频中有很多设计最佳实践。
它肯定会帮助您的应用程序更快地运行。