Фоновая служба / работник не сборщик мусора

Любой набор переменных также может быть завершен в классе. Переменные «Variable» могут быть добавлены к экземпляру класса во время выполнения, напрямую обращаясь к встроенному словарю через атрибут __dict__.

Следующий код определяет класс Variables, который добавляет переменные (в этом случае атрибуты) к своему экземпляру во время построения. Имена переменных берутся из указанного списка (который, например, мог быть сгенерирован программным кодом):

# some list of variable names
L = ['a', 'b', 'c']

class Variables:
    def __init__(self, L):
        for item in L:
            self.__dict__[item] = 100

v = Variables(L)
print(v.a, v.b, v.c)
#will produce 100 100 100
0
задан Frank R. Haugen 23 March 2019 в 23:42
поделиться

1 ответ

Это ожидаемое поведение сервера GC. Он настроен так, чтобы наилучшим образом использовать доступную память, и поэтому не будет собирать, если в нем действительно нет необходимости. Это действительно проблема? Операционная система способна передавать и выгружать память по мере необходимости, поэтому, если вы работаете в 64-битной среде, это не должно иметь влияния в большинстве сценариев. Если это все еще вызывает беспокойство, есть несколько альтернатив:

  • Самое простое решение - переключиться на GC рабочей станции, что намного более агрессивно и собирает память через регулярные промежутки времени. Установка параметра gcServer на false активирует рабочую станцию ​​GC
  • Вы можете играть с количеством куч, выделенных GC. Если процессор имеет большое количество ядер, это может оказать заметное влияние. Это можно сделать с помощью настройки GCHeapCount. См. эту статью от Maoni Stephens для получения дополнительной информации
  • . Вы можете создать задание Windows , чтобы ограничить доступную для процесса память. Однако это намного сложнее, так как, насколько мне известно, в Windows нет встроенного инструмента, который бы делал это

.NET Core 3.0 принесет новые настройки для настройки ГХ для низких -сценарии, но он не будет выпущен до второго семестра.

0
ответ дан Kevin Gosse 23 March 2019 в 23:42
поделиться
Другие вопросы по тегам:

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