避免多次垃圾收集执行

发布于 2024-12-04 13:11:26 字数 166 浏览 0 评论 0原文

在一些博客中读到,Android 中的 GC 发生在主(UI)线程上,这可能会导致 UI 屏幕变得迟缓,具体取决于 GC 执行的频率。 因此我想知道如果我手动释放对我没有进一步用处的对象(通过分配空值)会是一个好主意吗? 这样我们就可以避免应用程序中多次执行GC。

请分享您的想法。 谢谢, 存货单元

Read in some blog that GC in Android happens on main(UI) thread, this may create sluggishness in UI screen depending on the frequency of GC execution.
Hence I was wondering will it be a good idea if I manually release objects(by assigning null value) which has no further use for me.
This way we may avoid multiple execution of GC in the application.

Please share your thoughts.
Thanks,
sku

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最冷一天 2024-12-11 13:11:26

不存在“手动释放对象”这样的东西——至少对 GC 没有任何意义。当您丢失对对象的所有引用时,对象不会立即被释放/收集/无论如何;它只是变得有资格被收集。 GC 实际上是释放对象的,并且当它需要这样做时它就会这样做。

防止 GC 如此辛苦工作的唯一真正方法是创建更少的对象,尤其是临时对象。更少的垃圾==更少的收集。

There's no such thing as "manually releasing objects" -- at least not in any way that's meaningful to GC. An object doesn't immediately get freed/collected/whatever when you lose all references to it; it just becomes eligible for collection. GC is what actually does the releasing of the object, and it does so when it feels like doing so.

The only real way to keep the GC from working so hard is to create fewer objects, particularly temporary objects. Less garbage == less collection.

红衣飘飘貌似仙 2024-12-11 13:11:26

释放(取消引用)不再使用的对象始终是一个好主意。您还可以使用 SoftReferenceWeakReference 和/或 WeakHashMap 帮助 GC 拾取您需要的内容如果系统需要空间,不介意离开。

有关 Android GC 系统的更多信息,请参见此处

Releasing (dereferencing) objects for which you have no further use is always a good idea. You can also use SoftReference, WeakReference and/or WeakHashMap to help the GC pick up stuff that you don't mind going away if the system needs space.

There's more information about Android's GC system here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文