В большинстве случаев рекомендуется не форсировать сборку мусора. (Каждая система, над которой я работал, имела принудительную сборку мусора, имела подчеркивающие проблемы, которые в случае ее устранения устраняли бы необходимость принудительного сборка мусора и значительно ускорила работу системы.)
Есть несколько случаев , когда вы знаете больше об использовании памяти, чем сборщик мусора. Это вряд ли может быть правдой для многопользовательского приложения или службы, которая отвечает более чем на один запрос за раз.
Однако в некоторых пакетных типах обработки вы знаете больше, чем GC. Например. рассмотрим приложение, которое.
- Дан список имен файлов в командной строке
- Обрабатывает один файл, а затем записывает результат в файл результатов.
- При обработке файла создается много связанных объектов, которые невозможно собрать до завершения обработки файла (например, дерево разбора)
- Не сохраняет состояние соответствия между файлами, которые он обработал .
Вы можете иметь возможность провести (после тщательного) тестирования, что вам необходимо принудительно выполнить полную сборку мусора после обработки каждого файла.
В других случаях это служба, которая активируется каждые несколько минут для обработки некоторых элементов, и не сохраняет состояния, пока она спит . Затем принудительное создание полной коллекции перед сном может оправдать себя.
Единственный раз, когда я бы рассмотрел принуждение
коллекция, когда я знаю, что много
объекта был создан недавно
и очень мало объектов в настоящее время
ссылка.
Я бы предпочел иметь API для сборки мусора, когда мог бы дать ему подсказки об этом типе вещей, не заставляя себя собирать GC.
См. Также « Показательные выступления Рико Мариани »