繁体   English   中英

Android确定GC释放的对象

[英]android determine GC freed object

我的android应用程序性能低下。 从logcat中,我发现耗时的因素是垃圾收集。 每个gc至少消耗110ms。 gc经常显示。 无论如何,有没有确定收集的物体?

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

这将显示512个最新分配的列表,以及大小和堆栈跟踪。 由此,您应该能够知道是什么在消耗内存并导致GC。

对于Android GC而言,这并不是一个奇怪的值。 〜100ms和〜500K值是相当平均的,但这当然取决于项目规范。真正的问题在于代码导致G​​C调用的频率。

这是一个示例:如果通过ListView和一些自定义Adapters实现列表,则可能会获得有史以来最差的性能和最好的性能,这取决于您为它们编写代码的方式。 如果您不优化列表并创建一个新的View(通过从.xml文件中填充它),您将非常频繁地收到GC调用,这在UI中被视为小问题或挂断。

确定是什么原因导致GC问题的最佳方法是对它进行定位。 启动您的应用程序,并一次监视它的GCMS粘度,然后一次使用它,然后查看是哪个元素或“活动”导致了其中的大部分,然后从那里去。

还可以尝试使用一些工具来监视内存使用情况。 例如,如果您使用的是Eclipse,则有一个名为MAT的工具,它将使您对整个项目中的对象用法有更多的了解。

http://developer.android.com/videos/index.html中查看视频。

尤其是那些谈论“让您的UI更快”的视频,视频中展示了很多设计最佳实践。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM