gpt4 book ai didi

java - Java 中的弱引用和垃圾收集

转载 作者:行者123 更新时间:2023-11-30 02:06:37 24 4
gpt4 key购买 nike

只是一个简单的问题,执行方法时是否会发生垃圾收集?因为我相信一段代码胜过一千个单词,所以我们开始:

 public void start() {
// view is an instance of WeakReference<View> and is not null
if (view.get() != null) {
fetchFeaturedProducts(view.get().getCategory());

// Some work
// More work
// And more work
//
// Garbage collections happens, now view.get() is null
//
// Is it possible?
// If yes, then I think there is now way to get around it other then checking right before dereferencing?
// Or am I wrong and being paranoid?
// Or is there a sophisticated way to resolve this issue other than using Kotlin?

fetchProducts(view.get().getCategory(), Manufacturer.All_COMPANIES, Tarteeb.TARTEEB_NONE, true);
}
}

真的需要您的专家建议。谢谢:)

编辑:如果这是可能的,我正在考虑创建一个扩展 WeakReference 的虚拟类。并压倒一切get检查 null 的方法那里。如果是null ,返回 View 的虚拟对象那什么也没做..但我有一种感觉,这更像是一种黑客行为,而不是一种解决方案。还有更好的想法吗?

最佳答案

这绝对可以而且实际上必须发生——如果没有执行任何方法,JVM 将终止。当然,详细信息取决于您的实际 JVM 供应商、操作系统和硬件,但可以在分配进行时或同时触发收集。它可以停止方法或让它们部分继续。您对此无法控制(并且很少需要关心)。

此外,引用处理可能独立于所有这些发生,因此引用在所有情况下都可能变为空。

处理引用变为 null 的方法(实际上也适用于普通 getter)是首先分配给局部变量,然后检查该变量是否为 null。它永远不会在您眼前发生变化,并且它将在您的作用域的生命周期内使引用的对象保持 Activity 状态(如果您不使用变量,则会有一些限制)。

关于java - Java 中的弱引用和垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51147963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com