gpt4 book ai didi

java - 新关键字和垃圾收集

转载 作者:行者123 更新时间:2023-11-29 07:41:24 24 4
gpt4 key购买 nike

我有一个与 new 关键字相关的查询。

1.

和有什么区别
new Demo().abc();

Demo demo=new Demo();
demo.abc();
demo=null;

2.如果我使用第一个然后自动垃圾收集器删除内存?

我的问题是:

如何删除以下对象的内存:

new Demo().abc(); 

最佳答案

案例-1:

new Demo().abc();

在这里,我们不维护对新创建的 Demo 实例的任何显式引用。但在 abc() 内部,this 引用将指向 创建的实例。因此,如果引用没有从 abc() 泄漏,一旦方法返回,新创建的 Demo 实例将准备好进行 GC(因为它变成 < em>无法从任何线程访问)。

如果有这样的引用泄漏:

public void abc()
{
someOtherMethod(this); // starts another thread and does something else
...
}

在上述情况下,即使 abc() 返回,创建的 Demo 实例仍然可以访问,因此不符合 GC 条件。

案例-2:

Demo demo=new Demo();
demo.abc();
demo=null;

一旦你将 demo 设置为 null 并假设 abc() 不会泄漏 demo< 的引用 到其他线程,一旦您将 demo 实例设置为 null,您的 demo 实例将变得无法访问,因此,它将是 < em>有资格获得 GC。

关于java - 新关键字和垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29744765/

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