Je travaille sur la JVM depuis des années et j'ai très rarement rencontré un crash de la JVM ... il y a environ 6 mois environ.
Depuis, j'ai connu environ 5 plantages JVM résultant de 2 défauts JVM. La solution d'Oracle était toujours la même ... mise à niveau.
Chaque mise à niveau est toujours vers et depuis une version ponctuelle ... c'est-à-dire et la dernière suggestion d'Oracle (après avoir confirmé qu'ils ont corrigé le bogue) était de passer de 1.6u20 à 1.6u26.
Dans quelle mesure devrais-je mettre à niveau des versions mineures de la JVM?
Est-ce un grand événement qui nécessite une énorme quantité de tests de régression ou s'agit-il de mises à niveau sûres qui devraient être adoptées?
Réponses:
La mise à niveau d'une version mineure ne devrait pas être un événement majeur et je n'ai jamais rencontré de problème.
Cela dit, les problèmes infâmes de Java 7 sont quelque peu effrayants, et même difficile, il s'agissait d'une mise à niveau majeure de la version, ces problèmes spécifiques sont apparus en fait dans Java 6 ~ u20 et ont peut-être été corrigés dans u25. Ils sont apparus uniquement parce que Java 7 a certains indicateurs d'optimisation activés par défaut que Java 6 n'a pas. Si vous aviez utilisé ces indicateurs dans Java 6, vous auriez pu subir non seulement des plantages, mais une exécution incorrecte des boucles , c'est-à-dire des erreurs de calcul, en raison d'une mise à niveau mineure de 6u19 à 6u20 (environ).
Le fait est que personne ne garantit qu'une version mise à niveau fonctionnera du tout. La JVM, son environnement (ordinateur, système d'exploitation) et votre application, ils interagissent tous mutuellement, et pour être raisonnablement sûr que l'énorme pile de choses joue bien ensemble, vous devez en effet faire énormément de tests de régression.
Mon approche des mises à niveau JVM est similaire à toutes les mises à niveau: à moins d'avoir un besoin spécifique de mise à niveau et à moins qu'il ne s'agisse d'une mise à niveau de sécurité critique, j'attendrai un moment et lirai les expériences des autres sur Internet. Si personne ne se plaint dans un mois environ, la mise à niveau est probablement sûre.
la source
D'après mon expérience avec les applications Java d'entreprise, les avantages de l'adoption des mises à jour JVM mineures l'emportent sur les risques associés.
Un avantage est que les mises à jour mineures contiennent presque toujours des corrections de bogues . L'application de ces mises à jour peut réellement améliorer la stabilité de vos environnements de production. J'ai rencontré des pannes JVM où l'analyse des causes profondes révèle que le défaut a déjà été identifié et corrigé dans une mise à jour JVM mineure.
Un autre avantage est que les mises à jour mineures contiennent souvent des améliorations de performances . Cependant, comme l'a noté @Joonas, il est risqué d'utiliser des indicateurs de performances non éprouvés ou expérimentaux dans toute mise à jour (majeure ou mineure) sans tests significatifs.
Comme pour tout changement, il est très important que vous procédiez de manière responsable . Voici quelques pratiques à suivre lors de la planification d'une mise à jour JVM:
la source
Autour d'Oracle Java 1.6 u20, un contrôle de sécurité alertant du "code mixte" a été introduit, ce qui a influencé notre application pour certains utilisateurs, provoquant son plantage. Il s'agissait d'une mise à niveau mineure et avait de graves influences sur la production.
Soyez toujours prêt pour un retour en arrière.
la source