относительно сборки "мусора". Почему делают мы должны назвать System.gc ();?

Сборку "мусора" называют автоматически, когда объект отнесен в, больше не доступно никакой переменной. Но мне нравится, знают, почему мы называем явно использование System.gc (), когда сборку "мусора" называют автоматически. Когда делают мы называем System.gc ();

6
задан giri 3 March 2010 в 18:13
поделиться

4 ответа

Не знаете. Как вы говорите, сборка мусора автоматическая. System.gc () даже не вызывает сборку мусора; это просто намек для JVM, что «сейчас самое время немного почистить»

В общем, попытка заставить сборщик мусора делать то, что вы хотите, с помощью System.gc () - это хитрость, применяемая людьми которые думают, что знают лучше, чем они есть на самом деле, или в качестве (попытки) обходного пути для неработающего кода.

Я писал Java в течение многих лет и еще не видел ситуации, когда вызов System.gc был действительно правильным решением (во всем, что я написал)

10
ответ дан 8 December 2019 в 12:58
поделиться

У нас нет.

Просто нет.

Возможно, мой опыт ограничен, но я ни разу не считал необходимым вызвать System.gc ().

Я процитирую Брайана Гетца по поводу производительности (если вы не слышали о нем, поищите его - и прочтите и остальную часть этой статьи):

Третья категория где разработчики часто ошибочно думают, что они помогают сборщику мусора, - это использование System.gc () , которое запускает сборку мусора (на самом деле, это просто предполагает, что это может быть хорошее время для сборки мусора) . К сожалению, System.gc () запускает полную коллекцию, которая включает в себя трассировку всех живых объектов в куче, а также очистку и сжатие старого поколения. Это может потребовать много работы.

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

6
ответ дан 8 December 2019 в 12:58
поделиться

Вам это не нужно. Думайте об этом как о диагностическом инструменте, как о возможности записи в консоль отладки.

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

1
ответ дан 8 December 2019 в 12:58
поделиться

Вам это нужно. Это очень полезно, что бы ни говорили другие люди.

Пример использования: Допустим, вы только что завершили долгую фоновую задачу, для которой использовалось много памяти. Ни один из этих объектов больше не будет использоваться. Поскольку задача заняла много времени, пользователь не будет заботиться о следующих 5-10 секундах. Это подходящее время для сборки мусора.

Если вы не GC на этом этапе, это произойдет позже. Вероятно, во время интерактивного использования программы в этот момент пользовательский интерфейс становится нестабильным.

1
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: