Как я должен сделать вывод, когда GC должен работать?

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

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

1 ответ

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

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

Другие вопросы по тегам