Лучшая практика для принуждения сборки "мусора" в C#

Я не использовал его, но Вы могли попробовать PyHeap. Это записано в C так, надо надеяться, это достаточно быстро для Вас.

Вы, положительный heapq/PriorityQueue не будет достаточно быстр? Могло бы стоить собраться с одним из них запуститься, и затем представить, чтобы видеть, является ли это действительно Ваша производительность bottlneck.

116
задан Echostorm 24 October 2008 в 13:49
поделиться

1 ответ

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

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

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

  • получает список имен файлов в командной строке
  • Обрабатывает отдельный файл, а затем записывает результат в файл результатов.
  • При обработке файла создает множество взаимосвязанных объекты, которые не могут быть собраны до завершения обработки файла (например, дерево синтаксического анализа)
  • Не сохраняет много состояний между обработанными файлами .

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

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

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

См. также « Лакомые кусочки производительности Рико Мариани »

31
ответ дан 24 November 2019 в 02:14
поделиться
Другие вопросы по тегам:

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