Я работал над JVM в течение многих лет, и я очень редко испытывал сбои в JVM ... это происходило примерно 6 месяцев назад.
С тех пор я испытал примерно 5 сбоев JVM в результате 2 дефектов JVM. Решение от Oracle всегда было одно и то же ... обновление.
Каждое обновление всегда до и с момента выпуска ... то есть, и последнее предложение Oracle (после подтверждения того, что они исправили ошибку) заключалось в обновлении с 1.6u20 до 1.6u26.
Насколько я должен обновлять второстепенные версии JVM?
Это большое событие, которое требует огромного количества регрессионного тестирования, или это безопасные обновления, которые следует принять?
Ответы:
Это не должно быть большим событием для обновления второстепенных версий, и я никогда не испытывали проблемы.
Тем не менее, печально известные проблемы Java 7 несколько пугающие, и даже несмотря на то, что это было серьезное обновление версии, эти специфические проблемы фактически появились в Java 6 ~ 20 и, возможно, были исправлены в u25. Они появились только потому, что в Java 7 по умолчанию включены некоторые флаги оптимизации, которых нет в Java 6. Если бы вы использовали эти флаги в Java 6, вы могли бы испытывать не только сбои, но и некорректное выполнение циклов , то есть просчеты, из-за незначительного обновления с 6u19 до 6u20 (приблизительно).
Дело в том, что никто не гарантирует, что обновленная версия будет работать вообще. JVM, его среда (компьютер, ОС) и ваше приложение взаимодействуют друг с другом, и, чтобы быть уверенными в том, что весь огромный массив вещей прекрасно сочетается, вам действительно нужно провести огромное количество регрессионного тестирования.
Мой подход к обновлениям JVM аналогичен любым обновлениям: если у меня нет особой необходимости в обновлении и если это не критическое обновление безопасности, я подожду некоторое время и прочту опыт других людей в Интернете. Если никто не жалуется в течение месяца или около того, то, скорее всего, его можно обновить.
источник
По моему опыту работы с корпоративными Java-приложениями преимущества использования незначительных обновлений JVM перевешивают связанные с этим риски.
Одним из преимуществ является то, что незначительные обновления почти всегда содержат исправления ошибок . Применение этих обновлений может фактически улучшить стабильность вашей производственной среды. Я испытывал сбои JVM, когда анализ первопричин показывает, что дефект уже был идентифицирован и исправлен в незначительном обновлении JVM.
Еще одним преимуществом является то, что небольшие обновления часто содержат улучшения производительности . Однако, как отмечает @Joonas, рискованно использовать непроверенные или экспериментальные флаги производительности в любом обновлении (основном или незначительном) без значительного тестирования.
Как и в случае любых изменений, очень важно, чтобы вы действовали ответственно . Вот некоторые приемы, которым я следую при планировании обновления JVM:
источник
Вокруг Oracle Java 1.6 u20 было введено предупреждение проверки безопасности для «Смешанного кода», что повлияло на наше приложение для некоторых пользователей, вызвав его сбой. Это было незначительное обновление и имело серьезное влияние на производство.
Всегда будьте готовы к откату.
источник