Присвоение «нуля» объектам в каждом приложении после их использования - PullRequest
6 голосов
/ 04 декабря 2009
  • Вы всегда присваиваете объекту null после того, как достигнут его объем?

  • Или вы полагаетесь на JVM для сборки мусора?

  • Вы делаете это для всех видов приложений, независимо от их длины?

  • Если да, то всегда ли это хорошая практика?

Ответы [ 14 ]

0 голосов
/ 05 декабря 2009

Был класс ошибок утечки памяти, которые происходили независимо от того, установил ли я ссылку на ноль - если библиотека, которую я использовал, была написана на языке, подобном C, без управления памятью, то просто установка объекта на ноль не обязательно освободить память. Нам пришлось вызывать метод close () объекта, чтобы освободить память (что, конечно, мы не могли сделать после установки его в null).

Таким образом, мне кажется, что де-факто метод управления памятью в Java заключается в том, чтобы полагаться на сборщик мусора, если только у объекта / библиотеки, которые вы используете, нет метода close () (или чего-то подобного).

0 голосов
/ 04 декабря 2009

Я предполагаю, что вы задаете этот вопрос, потому что вы видели код с переменными, которым присваивается значение null в точке, где к ним никогда больше не будет доступа.

Мне не нравится этот стиль, но другой программист широко использовал его и сказал, что его учили этому на курсе программирования в его университете. Он объяснил это тем, что он предотвратит обнаружение ошибок, если он попытается использовать переменную позже, вместо неопределенного поведения, он получит исключение нулевого указателя.

Так что, если вы склонны использовать переменные, где вы не должны использовать переменные, это может сделать ваш код более простым для отладки.

0 голосов
/ 04 декабря 2009

- Вы всегда присваиваете объекту null после того, как достигнут его охват?

нет

Нет

- Или вы используете JVM для сборки мусора?

Да

- Вы делаете это для всех видов приложений, независимо от их длины?

Да

- Если да, то всегда ли это хорошая практика?

N / A * * одна тысяча тридцать два

0 голосов
/ 04 декабря 2009

При использовании .Net я не думаю, что нужно устанавливать объект в null. Просто позвольте сборке мусора произойти.

...