原文はこちら。
The original article was written by Billy Korando (Developer Advocate at Oracle).
https://inside.java/2024/04/21/sip096/
JDK Mission Control (JMC) 9 のバイナリが利用可能になりました。
JDK Mission Control (JMC) 9 Downloads
https://www.oracle.com/java/technologies/javase/products-jmc9-downloads.html
このエントリではJMC 9の主要な変更点について取り上げます。
JMC Requires JDK 17
JMC 9の最も顕著な変更点は、実行にあたりJDK 17以後のJDKが必要になった点です。
とはいえ、JDK 17がJMC実行で必要ではありますが、JDK 7u40以後のJFR記録はこれまで通り読めます。以下はシンプルなJDK 7のアプリケーションからの記録の例です。
JMC Updated to Use Eclipse 4.30
JMCは、Eclipse 2023-12プロジェクトのEclipse 4.30を使うようにアップデートされています。Eclipse 4.30での変更点の詳細は以下のURLをチェックしてください。
Eclipse 4.30 – New and Noteworthy
https://eclipse.dev/eclipse/news/4.30/
Support for Dark Mode
JMCでダークモードがサポートされました。
- macOS
- Settings > General > Appearance
- Windows
- Window > Preferences > General > Appearance
へと移動し、ダークテーマを選択すると変更できます。
Configurable JVM Browser
JVM Browserがアップデートされ、新しいJVMをチェックする頻度を構成できるようになりました。JVM Browserを構成するには、
- macOS
- Settings > JDK Mission Control > JVM Browser > Local
- Windows
- Window > Preferences > JDK Mission Control > JVM Browser > Local
へと移動してください。デフォルト値は5000ミリ秒(5秒)ですが、この値は以前ハードコーディングされていた値と同じです。
Increase to Event Checkpoint Limit
Event Checkpoint Limitがu4
(32-bit wide type)の制限を超えても大丈夫なように変更されました。この変更はJDK 20でのJFRに対する変更を受けたものです。この変更の詳細は以下のURLをチェックしてください。
[JDK-8298129] Let checkpoint event sizes grow beyond u4 limit
https://bugs.openjdk.org/browse/JDK-8298129
Searching Events by Event Type Id
イベントブラウザはイベントタイプIDでイベントを検索できるようにアップデートされています。さらに、イベントタイプIDを列に表示できるようになりました(デフォルトでは非表示)。
Using JMC with Native Images
GraalVMユーザー向けに、以前のバージョンのJMCでは、Native ImageがJFRをサポートしていたにもかかわらず、JFRの有効化ができませんでしたが、この問題はJFR 9で解決しています(訳注:原文ではJFR 9とありますが、文意上、JMC 9が適切なはず)。
Flame Graph Update
Flame GraphはJava Swingを使って描画されるようになりました(以前は埋め込みブラウザを使っていました)。Java Swingを使うように変更したことで、グラフィックのアップデート、性能やモデル作成が改善されています。
Rules Engine Updates
JMCはルールエンジンを有しており、このルールエンジンを使って自動的にJFR記録を分析し、潜在的なパフォーマンスボトルネックやその他の課題をチェックします。このルールエンジンがJMC 9でアップデートされ、新たなルールが追加されました。
G1 Pause Time Rule
G1 MMUルールは、G1ポーズ時間が目標値を超過しているかどうかをチェックします。
Finalization Statistics
JDK 18で、Finalization は削除のため非推奨になりました。
JEP 421: Deprecate Finalization for Removal
https://openjdk.org/jeps/421
この変更により、JFRに新しいイベントタイプjdk.FinalizationStatistics
が追加されました。Finalizers runRという新しいルールは、このイベントタイプを読み取り、アプリケーションがオブジェクトに対してfinalize
を呼び出したかどうかをチェックします。
Inverted Parallelism
Inverted Parallelismという新たなルールでは、パラレルGCがどれほど効率的に実行しているかをチェックします(パラレルGCは、GC作業を処理するために複数のスレッドを利用します)。このルールの詳細は、以下のURLをご覧ください。
[JMC-8144] Add rule to detect GC Inverted Parallelism
https://bugs.openjdk.org/browse/JMC-8144
Conclusion
ここで取り上げたのは、JMC 9の最も重要な変更点のほんの一部です。JMC 9では、合計200件近くのJBS(JDK Bug System)上の問題が解決されました。すべてのチケットはJBSで確認できます。
JBS(JDK Bug System)
https://bugs.openjdk.org/
また、JMC 9に関するMarcus Hirtの記事やその他の記事もご覧ください。
JDK Mission Control 9.0.0 Released!
https://hirt.se/blog/?p=1477
彼はJMCやモニタリングの実行などに関する多くのトピックを取り上げています。Marcus Hirtは、現在のJDK Mission Controlの最初のエンジニアの一人です。
Additional Reading
Repository for OpenJDK Mission Control | https://github.com/openjdk/jmc |
Download JMC 9 | https://www.oracle.com/java/technologies/javase/products-jmc9-downloads.html |
Eclipse 4.30 – New and Noteworthy | https://eclipse.dev/eclipse/news/4.30/ |
Add a rule to detect GC Inverted Parallelism | https://bugs.openjdk.org/browse/JMC-8144 |
JDK Mission Control 9.0.0 Released! – Marcus Hirt | https://hirt.se/blog/?p=1477 |
JBS Issues Resolved in JMC 9 | https://bugs.openjdk.org/ |
JEP 421: Deprecate Finalization for Removal | https://openjdk.org/jeps/421 |
Let checkpoint event sizes grow beyond u4 limit | https://bugs.openjdk.org/browse/JDK-8298129 |