gpt4 book ai didi

java - 垃圾收集器意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:49 26 4
gpt4 key购买 nike

我不明白这里发生了什么

public class UnderstandGC {
public class Inner1
{
String name=new Inner2().name;
public void finalize()
{
System.out.println("Inner1 -> I am Dead");
}
}
public class Inner2
{
public String name="Inner2";
public void finalize()
{
System.out.println("Inner2 -> I am Dead");
}
}
public void finalize()
{
System.out.println("Main -> I am Dead");
}
public static void main(String[] args) {
UnderstandGC ugc=new UnderstandGC();
Inner1 inner1=ugc.new Inner1();
//System.out.println("hello"); //1

Runtime.getRuntime().gc();


}
}

预期输出:Inner2 -> I am Dead 在 Inner1 中实例化为字段引用的 Inner2 的 bcoz 对象没有来自主线程运行时堆栈的本地引用。

观察到的输出:

有趣的观察是,如果我在代码中包含注释 //1 ,它就可以正常工作。无法理解发生了什么。

最佳答案

gc() method javadoc

Calling this method suggests that the Java virtual machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse.

无法保证在任何一种情况下都会运行 GC。

关于java - 垃圾收集器意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23859803/

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