【发布时间】:2011-09-15 03:28:12
【问题描述】:
在一些博客中读到,Android 中的 GC 发生在主(UI)线程上,这可能会根据 GC 执行的频率在 UI 屏幕上造成迟缓。 因此,我想知道如果我手动释放对我没有进一步用途的对象(通过分配空值)是否是个好主意。 这样我们可以避免在应用程序中多次执行 GC。
请分享您的想法。 谢谢, sku
【问题讨论】:
标签: java android memory-leaks garbage-collection
在一些博客中读到,Android 中的 GC 发生在主(UI)线程上,这可能会根据 GC 执行的频率在 UI 屏幕上造成迟缓。 因此,我想知道如果我手动释放对我没有进一步用途的对象(通过分配空值)是否是个好主意。 这样我们可以避免在应用程序中多次执行 GC。
请分享您的想法。 谢谢, sku
【问题讨论】:
标签: java android memory-leaks garbage-collection
没有“手动释放对象”之类的东西——至少对 GC 没有任何意义。当你失去对它的所有引用时,一个对象不会立即被释放/收集/无论如何;它只是变得有资格收集。 GC 是真正释放对象的行为,它会在想这样做的时候这样做。
让 GC 不那么辛苦的唯一真正方法是创建更少的对象,尤其是临时对象。更少的垃圾 == 更少的收集。
【讨论】:
释放(取消引用)您不再使用的对象总是一个好主意。如果系统需要空间,您还可以使用SoftReference、WeakReference 和/或WeakHashMap 来帮助 GC 拾取您不介意离开的东西。
还有更多关于Android GC系统here的信息。
【讨论】: