這個問題是continuation of this one,但要求更具體的情況。最終的成員變量可以使GC更好嗎?
比方說我們有以下類:
public class Person {
private Foot left, right;
public Person(Foot left, Foot right) {
this.left = left;
this.right = right;
}
}
我在想,如果下面的類將能夠從GC的角度優化的,如果我們把它分爲以下幾個:
public class Person {
private final Foot left, right;
public Person(Foot left, Foot right) {
this.left = left;
this.right = right;
}
}
如果我在看這個類,我可以立刻知道左右變量永遠不能設置爲null。這意味着只有當GC需要收集這個類的左側和右側對象(並減少對它的引用)時,纔會對父類Person的引用達到零。它也應該意味着它可以在收集左腳和右腳的同時收集人;也導致更少的運行和加速。
因此,在這個例子中,是否標記私有成員變量最終意味着代碼將導致垃圾收集中的一小部分加速(或者它可能被用作加速點)?
在前面的問題的答案似乎很明確地說出了答案爲「否」的任何有用的信息 - 有這些問題的答案的某些部分那不清楚?否則,這個問題聽起來幾乎完全一樣 – 2011-06-07 02:26:43