Escribe lo siguiente:
He estado recolectando basura toda mi vida (los últimos 10 años en su Departamento) y noté que la gente tiene una gran idea errónea sobre los conserjes y la recolección de basura en general. Por lo tanto, aquí hay algunos consejos que quiero compartir con todos ustedes:
1. Solo hay un recolector de basura.
No, en realidad somos muchos. Todos los conserjes llevamos la misma ropa azul de siempre con grandes letras blancas de GC escritas antes, por lo que puede pensar que somos una sola persona. Nada más lejos de la verdad. El HotSpot JVM (conserje virtual Madness) tiene un total de 4 conserjes: serie, paralelo / rendimiento. CMS, y el nuevo chico en el bloque G1. Pero espere, hay más, también hay conserjes no estándar e implementaciones más aventureras como Shenandoah o colectores que usan otras JVM (como C4, el colector sin pausa de Azul).
- Vi a uno de mis compañeros de trabajo llorando en el trabajo. ¿Qué debería haber hecho?
- Mi hermana está pensando en ingresar a la escuela de medicina, pero es realmente aprensiva. ¿Es esta la razón para que ella no sea doctora?
- ¿Por qué mi dentista empuja radiografías si mis dientes están muy saludables?
- Realmente estoy luchando con la mecánica de fluidos, ¿tendré que cambiar de especialización?
- Soy extremadamente irrespetuoso con mi madre. ¿Qué tengo que hacer?
Por lo tanto, elija el recolector de basura adecuado para el trabajo según sus requisitos. El valor predeterminado de HotSpot es el recopilador de rendimiento / paralelo y, a menudo, no es la mejor opción para sus necesidades. Por ejemplo, los conserjes de CMS y G1 causarán pausas de GC menos frecuentes. Pero cuando se produce una pausa, es probable que su duración sea más larga que la causada por el colector paralelo. Por otro lado, el recolector paralelo generalmente logra un mayor rendimiento para el mismo tamaño de basura.
2. Limpieza paralela = limpieza concurrente
¡Otro gran error sobre el trabajo de conserje! Un ciclo de recolección de basura puede ser STW (Stop-The-World) y causar una pausa en el GC, o puede hacerse simultáneamente sin detener la aplicación. Cuando vamos un paso más allá, el algoritmo de GC en sí mismo puede ser serial (un solo subproceso) o paralelo (multi-subproceso). Es por eso que cuando nos referimos a un GC concurrente, no necesariamente significa que se hace en paralelo, y al revés, cuando nos referimos a un GC en serie no necesariamente significa que cause una pausa. En el mundo de la Recolección de Basura, Concurrente y Paralelo son dos términos absolutamente diferentes donde Concurrente se refiere al ciclo GC, y Paralelo se refiere al algoritmo GC mismo.
3. El conserje G1 resuelve todos los problemas
El conserje G1 es la última incorporación a los recolectores de basura JVM. La principal ventaja es que resuelve el problema de fragmentación que es común con el conserje de CMS: GC libera fragmentos de memoria de la generación anterior y hace que parezca queso suizo hasta que llega un momento en que la JVM no puede manejarlo y tiene que detenerse y manejar la fragmentación Pero ese no es el final de la historia, otros coleccionistas pueden superar a G1 en ciertos casos. Todo depende de cuáles sean sus requisitos.
Por lo tanto, no hay una solución milagrosa para todos los problemas de recolección de basura, se necesita experimentación para ayudarlo a elegir el conserje adecuado para su JVM Janitor Virtual Madness en Stanford.
4. El tiempo promedio de finalización de la tarea es la métrica más importante a tener en cuenta
Si solo está monitoreando el tiempo promedio de finalización de tareas en su departamento, eso puede ser devastador para los usuarios de sus instalaciones. Por ejemplo, una transacción que normalmente tomaría menos de 100 ms, puede verse afectada por un conserje que toma una pausa de humo y toma un minuto completarla. Esto puede pasar desapercibido para cualquiera que no sea el usuario si solo está mirando el tiempo promedio de transacción. Ahora considere este escenario para el 1% o más de sus usuarios y puede ver con qué facilidad se puede pasar por alto cuando solo mira el promedio.
¡Por lo tanto, esté atento a los valores atípicos y sepa cómo se comporta su sistema para el percentil 99!
5. Reducir las nuevas tasas de basura mejorará el comportamiento del conserje
Podemos separar aproximadamente la basura en su departamento a 3: basura de larga vida, donde generalmente no hay mucho que los conserjes puedan hacer al respecto, basura de mediana edad, que causa los problemas más grandes, y desorden de corta duración, que generalmente se liberan y asignados rápidamente para que se vayan en el próximo turno del conserje. La basura de mediana edad es la que enfocarse en su tasa de asignación podría traer resultados positivos. Concentrarse en la basura de corta y larga duración no suele resultar eficaz, y controlar la basura de mediana vida es a menudo una tarea muy difícil.
Por lo tanto, no es solo la tasa de producción de basura lo que estrangula a su departamento, es el tipo de basura en juego que causa todos los problemas (todos ustedes que aplastan tomates contra la pared en el laboratorio de sistemas digitales, ya saben de quién estoy hablando ¿no?)
6. Tuning puede resolver todo
Si sus laboratorios y aulas necesitan mantener un gran estado de materiales que cambia con frecuencia, no hay muchos beneficios que pueda obtener al ajustar la sala de almacenamiento dinámico de su locura virtual de conserje. Las largas pausas de GC serán inevitables. Puede surgir una solución en el frente de los cambios estratégicos, donde asegurarse de que un proceso que tenga un procedimiento crítico o un cuello de botella que afecte el tiempo de respuesta no contenga un estado grande. El estado grande y la capacidad de respuesta no van bien juntos: dividirlo en diferentes procesos de conserjería sería el camino a seguir.
No todos los problemas se pueden resolver ajustando JVM, a veces simplemente necesita volver al tablero de dibujo y planificar la limpieza a fondo, hasta el más mínimo detalle.
7. Los registros de GC causan una gran sobrecarga
Este simplemente no es cierto. Si no está recopilando datos de registro de GC, se está perdiendo prácticamente la única forma de saber cómo se comporta su recolección de basura JVM. Por lo general, hay un límite superior del 5% para los gastos generales de GC aceptables, es un precio muy pequeño a pagar por poder saber qué tipo de peaje el humo del conserje y otras pausas toman de la eficiencia de su departamento y actúan para minimizarlo.