Указатели, ссылки, объект и счетчик ссылок - PullRequest
1 голос
/ 29 марта 2010
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.getSurname () возвращает «MySurname».

now String s = anInstance.getSurname();
anInstance = null;

вопрос в том, верно ли значение getSurname, а именно MySurname не будет мусора, потому что и только потому, что имеет активную ссылку counter> 0, и если другие свойства anInstance есть нулевой счетчик ссылок, они будут мусор собрали?

Ответы [ 2 ]

4 голосов
/ 29 марта 2010

MySurname не будет собирать мусор, поскольку имеет активную ссылку, s, но отсчета ссылок как такового нет. Сборщик мусора Java не полагается на подсчет ссылок.

2 голосов
/ 29 марта 2010

Java использует алгоритм сборки мусора, который намного сложнее простого подсчета ссылок.

Да, для экземпляра и любых объектов, на которые он ссылается, может быть GC'd, а фамилия - нет. То, произойдет ли это, зависит от области применения и других факторов, которые вы не описали. Я не думаю, что ваш вопрос дает достаточно контекста, чтобы дать значимый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...