Реализация связанного списка в Java и сборке мусора - PullRequest
3 голосов
/ 02 марта 2010

Если у меня есть структура связанного списка, и я реализую метод clear () следующим образом:

public void clear() {
    firstNode = null;
    size = 0;
}

будет ли он по-прежнему корректно собираться мусором, или я хотел бы пройтись по каждому узлу, установив nextNode в null?

Ни на один из узлов нельзя напрямую ссылаться из-за пределов связанного списка, поэтому ни в одном случае не было бы ссылки на какой-либо из них за пределами моего класса, но я не уверен, правильно ли Java соберет мусор для сбора оставшихся связанных узлов .

Ответы [ 3 ]

11 голосов
/ 02 марта 2010

Это должно быть хорошо - Java обрабатывает циклические ссылки и т.д. без проблем.

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

Поскольку ни один из узлов списка не имеет внешних ссылок. Установка firstNode в null сделает все узлы подходящими для GC, так как не будет никакого способа получить доступ к любому из узлов из внешней ссылки.

1 голос
/ 02 марта 2010

для вашей информации, реализация LinkedList от Sun анализирует все элементы списка и устанавливает для них значение null

...