Buscar
Social
Ofertas laborales ES
« Según Evans Data las aplicaciones androide se desarrolla más rápido que las aplicaciones para iOS | Main | James Goslin evalúa el desempeño de Oracle con tecnologías de Sun »
lunes
ene202014

Red Hat propone un nuevo recogedor de basura para el OpenJDK orientado a heaps enormes

Red Hat ha propuesto la inclusión de un nuevo recogedor de basura para el OpenJDK orientado a heaps enormes. Según Red Hat Este nuevo recogedor de basura  (GC), con nombre Shenandoah, cuando se ejecute provocaría pausas con una duración inferior a 10 ms en heaps de hasta 100 GB. 

Shenandoah está orientado uso sólo en situaciones donde estemos trabajando con una máquina con gran cantidad de cores y memoria RAM. Según sus propios autores, no tiene sentido emplear este GC si estás trabajando con un heap de menos de 20 GB o si la máquina en la que se está usando tiene menos de ocho cores.

También advierten que Shenandoah provoca un decremento en el rendimiento total de la aplicación que puede estar cercano a un 10% cuando se le compara con la misma aplicación funcionando con los actuales GCs y no hay ningún tipo de pausa ocasionada por el GC. Si los actuales GCs se disparan, entonces el rendimiento total de Shenandoah es similar al de los GCs actuales, pero con la ventaja de que las pausas que puede provocar en la aplicación tienen una duración considerablemente inferior cuando se trabaja con heap grande.

¿Veis alguna utilidad para un GC de este tipo en vuestras aplicaciones? ¿Os habéis encontrado alguna vez con la necesidad de tener que tunear el GC para evitar pausas por estar usando un heap muy grande?

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (3)

Si, en mi caso si. Tengo un heap de 32Gb y 8 cores. Las pausas del GC en la old generation sobre todo (que son stop-world) eran enormes.

Luego de tunning de la aplicación, con mucho profiling (para tratar de que la Old Generation tarde en llenarse, teniendo en cuenta el precepto de que "en java good die young" , caimos en un GC que permite asignar algunos nucleos al GC y mantener el resto de los nucleos para el thread acceptor y otros hilos del pool de hilos.

Me parece que para estos contextos (2000 usuarios concurrentes), es util (igualmente, el esquema de tener múltiples servidores más pequeños, en cluster o balanceados tal vez sea mejor, aun virtualizados).

saludos.

enero 20, 2014 | Unregistered Commentermartdominguez

Por curiosidad ¿Qué máquina virtual estás usando?

enero 20, 2014 | Registered CommenterAbraham

Buena pregunta, siempre hotspot.

Los problemas de performance los tuve con el JDK 6, hoy estamos en el 7u45.

Se que en la versión 7 hubo algunas mejoras, en lo que hace a GC, no profundicé mucho, tal vez debería, pero como dicen los libros de refactoring "si funciona bien no lo toques".

Saludos.

enero 21, 2014 | Unregistered Commentermartdominguez

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>