我已阅读Android的设计性能开发者指南。
我只是想知道,如果我有一个大型对象,我无法避免创建(这是昂贵的),当我知道我已经完成它时,我想立即解除分配似乎是合乎逻辑的。
似乎无法做到这一点。
有人建议将其设置为null,以便系统立即使用GC,这是否真的“立即”?因为如果系统(Dalvik VM)可以选择不释放我刚设置为null的大对象,那么将它设置为null根本不是解决方案。
将它设置为null是否会鼓励和加速GC是否正确?
这种方法是一种“足够好”的方式来优化Apps性能吗?或者是否值得加倍努力(如果可能的话),强制GC适用于任何Android设备的最佳性能?
答案 0 :(得分:4)
我认为在执行GC时你不应该担心细粒度的细节,因为我们无法控制何时调用gc。即使调用gc()也不能保证集合。来自System.gc()
的每个文档向虚拟机指示运行垃圾收集器是一个好时机。请注意,这只是一个提示。无法保证垃圾收集器实际运行。
在开发具有大对象分配的应用程序时,我会担心以下情况:
答案 1 :(得分:2)
大部分时间android都能很好地处理垃圾回收。除非你开始收到OutOfMemoryError,否则我不担心。
但是如果你真的担心它,将对象设置为null然后调用System.gc()很可能会导致它被收集。