指针,链接,对象和引用计数

时间:2010-03-29 09:50:26

标签: java

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的其他属性 有一个零参考计数器,他们会 收集垃圾?

2 个答案:

答案 0 :(得分:4)

MySurname不会被垃圾收集,因为它有一个有效的引用s,但没有引用计数。 Java的垃圾收集器不依赖于引用计数。

答案 1 :(得分:2)

Java使用垃圾收集算法,它比简单的引用计数复杂得多。

是的,anInstance和它引用的任何对象都可能是GC'd,而姓氏不是。是否发生这种情况取决于您未描述的范围和其他因素。我认为你的问题不足以提供有意义的答案。