Нужно ли использовать .clear () HashSet и HashMap каждый раз, когда поле больше не используется? - PullRequest
0 голосов
/ 27 апреля 2018

Нужно ли использовать .clear () HashSet и HashMap каждый раз, когда переменная больше не используется?

У меня в приложении много временных переменных: HashSets и HashMaps. Должен ли я очищать их каждый раз, когда, например, метод сделан? Сможет ли GC удалить его автоматически, если объект больше не будет использоваться чем-либо?

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

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

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

0 голосов
/ 27 апреля 2018

HashMap и HashSet являются объектами в Java. Поэтому, когда объект больше не упоминается и находится вне досягаемости, он становится пригодным для сбора мусора.

Однако, если вы считаете, что произошла утечка памяти, я рекомендую явно установить для всех ссылок на объекты соответствующих HashMap и HashSet значение NULL сразу после того, как они вам не нужны.

Вы можете обратиться к утечке памяти здесь:

https://dzone.com/articles/memory-leak-andjava-code

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

0 голосов
/ 27 апреля 2018

Когда хэш-карта выходит за пределы области видимости, она будет автоматически собирать мусор, поэтому вам не нужно вызывать clear, если все, что вы делаете - это разрешение на удаление.

Очистка подходит, если вы хотите повторно использовать карту, но хотите очистить ее от всех данных.

...