gpt4 book ai didi

java - 这会导致java内存泄漏吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:53 25 4
gpt4 key购买 nike

这是一道面试题,但我不太确定正确答案。假设我们有一些类:

public class A {
public Object link;
public A() {
link = null;
}
}

然后我们创建两个实例:

A a1 = new A();
A a2 = new A();
a1.link = a2;
a2.link = a1;

然后我们发布引用:

a1 = null;
a2 = null;

那么问题来了:因为JVM会使用GC机制。它将如何处理这种情况?它会在运行时立即删除这两个实例,还是只是对内存空间进行签名而不管它们?如果我有 100 万个这样的实例形成一个循环并且没有外部引用怎么办?清洗会导致GC线程挂起吗?

最佳答案

对象本身可以通过任意多的链接(如您提到的一百万个周期)相互引用。如果没有返回线程的“路由”,则对象有资格进行垃圾收集,无论它们连接到多少其他符合垃圾收集条件的节点。

现在这并不意味着它们会被收集,只是它们符合条件。因此,如果您的垃圾收集器决定不处理它们,那么我认为这可以被视为内存泄漏。您不能保证它们会消失。

关于java - 这会导致java内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597393/

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