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

时间:2017-01-29 14:19:54

标签: garbage-collection non-static

//= require_tree .

给定类实用程序,这是我的方法调用。

class Utility{
    public String a = "aaaa huge string";

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  

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

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

  

还会从String池中删除String b吗?

ub无关:见上文。

  

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

加载类,因为它们是字符串文字。去除取决于GC和实习。