He estado trabajando en la JVM durante años y rara vez he experimentado un bloqueo de la JVM ... hasta hace aproximadamente 6 meses.
Desde entonces, he experimentado aproximadamente 5 bloqueos JVM como resultado de 2 defectos JVM. La solución de Oracle siempre fue la misma ... actualización.
Cada actualización es siempre hacia y desde un lanzamiento puntual ... es decir, y la última sugerencia de Oracle (después de confirmar que resolvieron el error) fue actualizar de 1.6u20 a 1.6u26.
¿Qué tan preocupado debería estar actualizando versiones menores de la JVM?
¿Es este un gran evento que requiere una enorme cantidad de pruebas de regresión o son actualizaciones seguras que deberían adoptarse?
Respuestas:
No debería ser un gran evento actualizar una versión menor, y nunca he tenido problemas.
Dicho esto, los infames problemas de Java 7 son un tanto atemorizantes, e incluso si fue una actualización importante de la versión, esos problemas específicos aparecieron de hecho en Java 6 ~ u20 y tal vez se solucionaron en u25. Surgieron solo porque Java 7 tiene algunos indicadores de optimización habilitados por defecto que Java 6 no tiene. Si hubiera utilizado esos indicadores en Java 6, podría haber experimentado no solo bloqueos, sino también la ejecución incorrecta de bucles , es decir, errores de cálculo, debido a una actualización menor de 6u19 a 6u20 (aproximadamente).
El hecho es que nadie garantiza que una versión actualizada funcionará en absoluto. La JVM, su entorno (computadora, sistema operativo) y su aplicación, todos interactúan mutuamente, y para estar razonablemente seguros de que todo el enorme montón de cosas juega muy bien juntos, debería hacer una enorme cantidad de pruebas de regresión.
Mi enfoque para las actualizaciones de JVM es similar a cualquier actualización: a menos que tenga una necesidad específica de actualizar y a menos que sea una actualización de seguridad crítica, esperaré un momento y leeré las experiencias de otras personas en Internet. Si nadie se queja dentro de un mes más o menos, entonces es seguro actualizar.
fuente
En mi experiencia con las aplicaciones Java empresariales, los beneficios de adoptar las actualizaciones JVM menores superan los riesgos asociados.
Una ventaja es que las actualizaciones menores casi siempre contienen correcciones de errores . La aplicación de estas actualizaciones puede mejorar la estabilidad de sus entornos de producción. He experimentado bloqueos de JVM donde el análisis de la causa raíz revela que el defecto ya ha sido identificado y corregido en una actualización menor de JVM.
Otro beneficio es que las actualizaciones menores a menudo contienen mejoras de rendimiento . Sin embargo, como señaló @Joonas, es arriesgado usar indicadores de rendimiento no comprobados o experimentales en cualquier actualización (mayor o menor) sin pruebas significativas.
Como con cualquier cambio, es más importante que proceda de manera responsable . Estas son algunas prácticas que sigo al planificar una actualización de JVM:
fuente
Alrededor de Oracle Java 1.6 u20 se introdujo una alerta de verificación de seguridad para "Código mixto", que influyó en nuestra aplicación para algunos usuarios provocando que se bloquee. Esta fue una mejora menor, y tuvo graves influencias en la producción.
Siempre prepárate para una reversión.
fuente