Algunos idiomas, por ejemplo, Java, introdujeron un GC de pausa baja.
Esos GC pueden hacer la mayor parte del trabajo sin detener el mundo entero. Obviamente, este es un problema bastante difícil porque requiere analizar la memoria cuando el hilo lo está modificando, lo que da como resultado datos que se pueden usar al comienzo del proceso y no más cuando finaliza, o datos que parecen ser basura, sino porque el la referencia se movió en la memoria y nunca apareció donde estaba mirando el GC.
Básicamente, ¿cuál es el (los) algoritmo (s) detrás de eso?
Los trabajos de investigación o el enlace de un artículo realmente técnico se considerarían una respuesta válida, ya que este tema es realmente técnico.
fuente
La razón por la que funciona es porque en Java, solo el GC puede liberar memoria que puede contener referencias de GC. Eso significa que siempre que pueda leer objetos en un hilo separado de forma segura, solo necesitará pausar el programa para observar las referencias en la pila.
Sugeriría por mutación que implementen alguna forma de copia en escritura para informar al GC sobre el cambio.
fuente