私は何年にもわたってJVMに取り組んできましたが、JVMのクラッシュを経験することはほとんどありません...約6か月前までです。
それ以来、2つのJVMの欠陥が原因で約5つのJVMクラッシュが発生しました。 Oracleのソリューションは常に同じでした...アップグレード。
各アップグレードは常にポイントリリースとの間で行われます。つまり、Oracleの最新の提案(バグが修正されたことを確認した後)は、1.6u20から1.6u26にアップグレードすることでした。
JVMのマイナーバージョンをアップグレードする必要はありますか?
これは膨大な量の回帰テストを必要とする大きなイベントですか、それとも受け入れるべき安全なアップグレードですか?
マイナーバージョンをアップグレードすることは大きなイベントであってはなりません。私は問題を経験したことがありません。
そうは言っても、 悪名高いJava 7の問題 はやや怖いです。メジャーバージョンのアップグレードであったとしても、実際にはJava 6〜u20とu25で修正された可能性があります。Java 7にはいくつかの最適化フラグがデフォルトで有効になっているため、Java 6 Java 6でこれらのフラグを使用した場合、クラッシュだけでなくループの不正な実行、つまり誤計算も発生する可能性があります。 、6u19から6u20へのマイナーアップグレードのため(およそ)。
事実は、アップグレードされたバージョンがまったく機能することを誰も保証するものではありません。JVM、その環境(コンピューター、OS)、およびアプリケーション、すべてが相互に作用し合い、膨大な量のものが全体としてうまく機能することを合理的に確認するには、実際に膨大な量の回帰テストを行う必要があります。
JVMのアップグレードへの私のアプローチは、他のアップグレードと同様です。特にアップグレードが必要でない限り、それが重要なセキュリティアップグレードでない限り、しばらく待って、インターネットで他の人の体験を読みます。 1か月ほどで誰も不満を言っていない場合は、アップグレードしても安全です。
エンタープライズJava=アプリケーションでの私の経験では、マイナーなJVM更新を採用することの利点は、関連するリスクよりも重要です。
1つの利点は、マイナーアップデートほとんどの場合、バグ修正が含まれるです。これらの更新を適用すると、実際に運用環境の安定性を向上させることができます。根本原因の分析により、欠陥がすでに特定されており、JVMのマイナーアップデートで修正されているというJVMクラッシュが発生しました。
もう1つの利点は、マイナーアップデートにしばしばパフォーマンスの向上が含まれることです。ただし、@ Joonasによって指摘されているように、重要なテストを行わずに、更新(メジャーまたはマイナー)で実証済みまたは実験的なパフォーマンスフラグを使用することは危険です。
他の変更と同様に、(責任)の方法で進めることが最も重要です。以下は、JVM更新を計画するときに従ういくつかのプラクティスです。
Oracleの周りJava 1.6 u20「混合コード」の安全チェック警告が導入され、一部のユーザーのアプリケーションに影響を与え、クラッシュを引き起こしました。これはマイナーアップグレードであり、本番環境に深刻な影響を及ぼしました。
常にロールバックの準備をしてください。