Должен ли я реализовать сборку мусора вручную в Java? - PullRequest
0 голосов
/ 08 марта 2019

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

Спасибо за ваш совет!

Ответы [ 2 ]

6 голосов
/ 08 марта 2019

Нет, JVM сделает это за вас.Вот почему это язык с автоматическим управлением памятью.Если вы хотите, из-за проблем с производительностью, вы можете вызвать:

Runtime r = Runtime.getRuntime();
r.gc();

, но нет никакой гарантии, что сборщик мусора удалит объекты, на которые нет ссылок.Это скорее предложение для JVM. Только если ты знаешь, что делаешь.На свой страх и риск.

Что вы можете сделать, это выбрать реализацию сборщика мусора, которая соответствует вашим потребностям.Например, если вы не хотите восстанавливать какую-либо память, для целей тестирования вы можете выбрать epsilon , добавив XX:+UseEpsilonGC flag.

2 голосов
/ 08 марта 2019

Сборщик мусора в основном делает работу сам.Вам не нужно ничего.Но вы даже можете наблюдать, как сборщик мусора очищает память JVM, как показано на рисунке

its not hard to tell where the garbage collector did his job... From https://raw.githubusercontent.com/dsyer/spring-boot-memory-blog/master/manual-gc-web.png

Автоматическая сборка мусора - это процесс просмотракуча памяти, идентифицируя, какие объекты используются, а какие нет, и удаляя неиспользуемые объекты.

дополнительная информация: Основы сборки мусора Java

...