gpt4 book ai didi

java - 使用递归函数在 Java 中进行垃圾收集

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:56 25 4
gpt4 key购买 nike

我知道在常规循环的每次迭代中,对象变得不可访问并被标记为垃圾回收。递归调用呢?像这样的东西:

public void doWork() {

Object a = new Object();

....some work with a...

this.sleep(60000);
doWork();


}

一旦第二次递归开始,第一次递归中的对象(即“a”)是否被标记为垃圾收集,或者它是否需要显式标记为空,因为外部函数由于递归而永远不会完成。

最佳答案

在每次递归调用期间,局部变量(此处引用“a”)被压入堆栈。局部变量是 GC 根。在第二次递归调用期间,新引用被压入堆栈。但是,第一个引用仍然存在,因此该对象仍然可以访问,因此不能被垃圾回收。

因此,如果您希望第一个创建的对象被标记为垃圾回收(当函数尚未完成时),您应该显式地将“a”设置为 null。

这是了解 GC 的有用链接:http://javabook.compuware.com/content/memory/how-garbage-collection-works.aspx

关于java - 使用递归函数在 Java 中进行垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27781116/

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