Olá, Lara!
Quanto à sua pergunta sobre a "aleatoriedade" do GC, é importante entender que o GC não é realmente aleatório, mas sim imprevisível do ponto de vista do programador. A razão para isso é que o GC é gerenciado pela JVM, que decide quando executar o GC com base em vários fatores, como a quantidade de memória disponível, a quantidade de memória que os objetos estão consumindo e o tempo que o sistema tem estado inativo, entre outros, ou seja, quando jogamos o lixo na rua sabemos que o mesmo será levado, mas muitas das vezes não sabemos quando, quem gerencia isso é a empresa de coleta, certo?
Então, mesmo que um objeto se torne elegível para coleta de lixo, não podemos prever exatamente quando o GC será executado e o objeto será removido da memória. Isso é uma decisão que a JVM toma internamente, e isso é claro são baseados em algoritmos muito complexos e políticas de gerenciamento de memória.
Espero que isso lhe ajude a dar uma melhor compreensão sobre. Lembre-se, a JVM é quem gerencia o GC e decide quando executá-lo, e essa decisão é baseada em vários fatores internos, tornando o momento da execução do GC imprevisível para nós, programadores.
Espero ter ajudado e reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!
Sucesso ✨
Um grande abraço e até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!