将非静态方法中定义的变量与对象一起进行垃圾收集


class Utility{
public String a = "aaaa huge string";
public void doSomething() {
String b = "bbbb huge string";
.....
}
}

给定类Utility,下面是我的方法调用。

Step 1)  Utility u = new Utility();
Step 2)  u.doSomething();
Step 3)  u = null;

当对象u在步骤3之后被垃圾收集时,字符串b是否也会从字符串池中删除?

字符串a和b何时从内存中加载和删除(如果有的话)?

方法中定义的变量不是实例的成员,因此它们引用的对象的GC完全独立于实例的GC。

当对象u在步骤3 之后被垃圾收集时

如果对象u在步骤3 之后被垃圾收集

字符串b也会从字符串池中删除吗?

ub无关:请参阅上文。

何时从内存中加载和删除字符串a和b(如果有的话)?

已加载类,因为它们是字符串文字。清除取决于GC和拘留。

相关内容

最新更新