GC - это поток deamon, который начинается с вашей JVM и заканчивается, когда ваша JVM заканчивается (JVM останавливается, если больше не существует потоков, не являющихся deamon).
Он работает в фоновом режиме и запускается в действие, когда / при необходимости. JVM решает, когда она будет запущена, и вы можете «запросить» ее запустить с помощью System.gc () .
Но я должен упомянуть, что вы не должны писать свой код для зависимости от запускаемого GC (финализаторы в Java не похожи на деструкторы в C ++). Люди, как правило, очень рассчитывают на сборщик мусора, а затем забывают об этом, который запрещен и ведет к утечкам памяти и трудностям в обнаружении ошибок.
На что вы можете рассчитывать, это то, что перед тем, как вы получите java.lang.OutOfMemoryError, GC включился в действие и сделал все возможное.