Alguns idiomas, por exemplo, java, introduziram um GC de baixa pausa.
Esses GC podem fazer a maior parte do trabalho sem fazer uma pausa no mundo inteiro. Obviamente, esse é um problema bastante difícil, pois exige a análise da memória quando o thread está sendo modificado, resultando em dados que podem ser usados no início do processo e não mais quando ele termina ou em dados que parecem ser lixo, mas porque o a referência foi movida na memória e nunca apareceu para onde o GC estava olhando.
Então, basicamente, qual é o algoritmo por trás disso?
Trabalhos de pesquisa ou link de artigo realmente técnico seriam considerados uma resposta válida, pois esse tópico é realmente técnico.
fonte
O motivo pelo qual ele funciona é porque, em Java, apenas o GC pode liberar memória que pode conter referências ao GC. Isso significa que, desde que você possa ler objetos em um encadeamento separado com segurança, você só precisará pausar o programa para observar as referências na pilha.
Eu sugeriria por mutação que eles implementassem alguma forma de copiar na gravação para informar o GC sobre a mudança.
fonte