String a = "a"; // allocate memory and write address of a memory block to a variable
String b = "b";
// a and b hold addresses
b = a; // copy a address into b.
// Now what? b value is completely lost and will be garbage collected
//*** next step
a = null; // now a does not hold a valid address to any data,
// still data of a object exist somewhere, yet we cannot get access to it.
如果在我的反思中某处出现错误,请纠正我。
我的问题是:
假设Instance类型的anInstance对象具有属性'surname' anInstance.getSurname()返回“MySurname”。
now String s = anInstance.getSurname();
anInstance = null;
问题是 - getSurname值是否为真,即MySurname 不会被垃圾收集,因为而且只是因为 它有积极的参考 计数器> 0,以及anInstance的其他属性 有一个零参考计数器,他们会 收集垃圾?
答案 0 :(得分:4)
MySurname
不会被垃圾收集,因为它有一个有效的引用s
,但没有引用计数。 Java的垃圾收集器不依赖于引用计数。
答案 1 :(得分:2)
Java使用垃圾收集算法,它比简单的引用计数复杂得多。
是的,anInstance和它引用的任何对象都可能是GC'd,而姓氏不是。是否发生这种情况取决于您未描述的范围和其他因素。我认为你的问题不足以提供有意义的答案。