看到项目中有这里的代码,大家看下,一个类里面有一个static字段的变量,当new一个对象后,没有被引用,是否会被垃圾回收器回收?
比如,代码如下:
public class Sta {
private static int s = 0;public Sta(int i) { setS(i); } public static int getS() { return s; } public static void setS(int s) { Sta.s = s; }
}
public class StaDriver {public static void main(String[] args) { new Sta(2); System.out.println(Sta.getS()); System.gc(); System.out.println(Sta.getS());//如果被回收,值应该是0,否则为2,大家看呢? }
}
当然会!
static的信息并不是保存在堆内存里面的,像s这个变量是保存在类Sta的meta信息里面的,和对象实例无关。
不会吧,如果你有显示让Sta.s=null,估计会,因为静态的好像是一个全局变量
很奇怪你所说的"没有被引用"是什么意思
你的代码完全没有体现出这一点.........
疑问同上!