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