java - objetos - ¿Por qué CMS tiene GC completo de un solo hilo?
que es garbage collector java (1)
Siempre que haya un fallo de modo concurrente o una falla de promoción con el CMS, el GC completo utilizará un solo hilo. ¿Por qué no podría hacer un GC completo utilizando un colector paralelo para disminuir la penalización total de GC?
No hay ninguna razón en particular, aparte de que no se ha implementado de esa manera y el esfuerzo de ingeniería se centra en G1. La mayoría de los usuarios de CMS simplemente intentan sintonizarlo de una manera que nunca sucede, "nunca", es decir, en un intervalo mayor que el que requiere el reinicio de JVM. El colector viejo paralelo no se puede reutilizar simplemente llamando a su código ya que las estructuras de datos internas entre los recopiladores difieren, por lo que implicaría un esfuerzo de implementación no trivial.
Los desarrolladores de Google han propuesto un parche para contribuir en paralelo con GC completo a CMS, pero no contaría con que esté disponible en cualquier compilación de openjdk en el corto plazo.