进行较小的JVM升级有多安全?


10

我从事JVM已有多年的经验,很少遇到JVM崩溃的情况,直到大约6个月前。

从那以后,我经历了大约2个JVM缺陷导致的5个JVM崩溃。Oracle的解决方案始终是相同的...升级。

每次升级始终是从一个点发布到另一个发布的……也就是说,Oracle的最新建议(在确认他们确实修复了该错误之后)是从1.6u20升级到1.6u26。

我应该如何关注JVM的次要版本?

这是否是需要进行大量回归测试的大事件,还是应该接受的安全升级?


3
有问题的JVM将在哪种情况下运行?您使用它来玩游戏小程序还是在其上运行医院的信息系统?正确答案很大程度上取决于该信息。
blubb 2011年

Answers:


5

不应该是一个升级版的未成年人的大事,我从来没有经历过的问题。

就是说,臭名昭著的Java 7问题有些令人恐惧,甚至很难解决,这是主要的版本升级,这些特定的问题实际上出现在Java 6〜u20中,也许已经在u25中得到了解决。它们之所以浮出水面,仅是因为Java 7默认启用了一些优化标志,而Java 6没有启用这些优化标志。如果您在Java 6中使用了这些标志,则可能会由于从6u19到6u20的微小升级(大约)而不仅崩溃,而且循环执行不正确,即计算错误。

事实是,没有人能保证升级版本能正常工作。JVM,它的环境(计算机,OS)和您的应用程序都相互交互,并且为了合理地确保一大堆东西很好地配合使用,您确实应该进行大量的回归测试。

我对JVM进行升级的方法与所有升级类似:除非我有特定的升级需求,并且除非它是关键的安全升级,否则我将等待一段时间并阅读其他人在Internet上的经验。如果一个月左右都没有人抱怨,那么升级就很安全。


您是否打算在任何地方阅读其他人在互联网上的经历?
2011年

@北达科他州:没有特定的地方。挂在许多邮件列表(例如announce@apache.org,在其中发出严重问题的警报是在Java 7发布之日)提供的大量此类信息。
乔纳斯·普拉卡

4

以我在企业Java应用程序方面的经验来看,采用次要JVM更新的好处在于避免了相关的风险。

好处是次要更新 几乎总是包含错误修复程序。应用这些更新实际上可以提高生产环境的稳定性。我经历了JVM崩溃,其根本原因分析显示该缺陷已被识别,并已在较小的JVM更新中修复。

另一个好处是,次要更新通常会改善性能。但是,正如@Joonas指出的那样,在未经重大测试的情况下,在任何更新(主要或次要)中使用未经验证或实验性的性能标志都是冒险的。

与任何更改一样,最重要的是您要以负责任的方式进行。在计划JVM更新时,请遵循以下一些实践:

  • 仔细查看所有发行说明,以了解当前版本和目标版本之间的每个次要更新。
  • 了解您的用户对应用程序中断的容忍度,并进行相应的回归测试。(@西蒙)
  • 在Internet(@Joonas)上研究他人的经验
  • 制定回滚计划(@Thorbjorn)

2

围绕Oracle Java 1.6 u20引入了针对“混合代码”的安全检查警报,这对某些用户的应用程序产生了影响,导致其崩溃。这是次要的升级,对生产产生了重大影响。

始终为回滚做准备。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.