Сборка мусора

При разработке проектов с использованием языка Fore необходима сборка мусора в некоторых специфических случаях, когда система не может автоматически уничтожить объект, основываясь на некоторых систематических критериях. Например, в случае, когда в системе имеются два неиспользуемых объекта A и B, ссылающихся друг на друга, система не сможет их уничтожить, так как счётчик ссылок у них обоих ненулевой. Для разрешения подобных ситуаций система периодически производит сборку мусора, в процессе которой помечаются все активные объекты, а остальные уничтожаются.

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

В ветке реестра [HKEY_CURRENT_USER\Software\Foresight\Foresight Analytics Platform\10.0\Fore] могут быть созданы следующие ключи:

Параметр Описание
GCStrategy (REG_DWORD)

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

  • бит 00010000. Сборка мусора при превышении лимита занимаемой виртуальной памяти (размер проверяемого лимита фиксирован, соответствует 50% виртуальной памяти).

  • бит 00001000. Проверка на возможность сборки мусора осуществляется с периодичностью, заданной в ключе GCInterval.

  • бит 00000100. Сборка мусора не выполняется. Для запуска процесса сборки мусора могут использоваться методы интерфейса IForeGarbageCollector.

  • бит 00000010. Попытка произвести сборку мусора осуществляется после каждого действия интерпретатора языка Fore.

  • бит 00000001. Сборка мусора производится, если в текущий момент не выполняются какие-либо методы приложения. Данный режим используется по умолчанию.

Различные режимы могут быть скомбинированы друг с другом. Режим по умолчанию соответствует числу 00001001 в двоичной системе или 9 в десятичной системе.

GCInterval (REG_DWORD) Интервал проверки на возможность сборки мусора. Значение задается в миллисекундах.

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

См. также:

Дополнительные настройки среды разработки