Как я должен сделать вывод, когда GC должен работать? - PullRequest
3 голосов
/ 02 октября 2010

Я пишу статически скомпилированный язык и хотел бы поддержать сборку мусора.перед его разработкой я хотел бы знать, как мне определить, когда должен работать GC?

Должно ли это быть после каждых 16 МБ?(проверка после достаточного повышения или непосредственно перед тем, как выделить 16 + мб).Есть ли какой-то случай, чтобы проверить более эффективный цикл, чтобы циклы могли повторно использовать одну и ту же память?и т.д.

1 Ответ

2 голосов
/ 02 октября 2010

Лучшее время для запуска ГХ, вероятно, "когда программе осталось некоторое время". Например, если у вас есть цикл выполнения, а в очереди нет событий, возможно, самое время запустить GC. И затем, возможно, также, если распределитель GC заметит, что ему нужно будет запросить у ОС больше памяти. Я думаю, что это также зависит от конструкции GC, например, Можно спроектировать GC, который работает в своем собственном потоке и не прерывает программу по сравнению с обычными GC "Stop the World".

Вопрос также в том, хотите ли вы внедрить GC только для обучения? Или вы просто хотите GC? В последнем случае я предлагаю вам заглянуть в Boehm GC.

...