What’s New in JMC 9? – Sip of Java

原文はこちら。

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 Controlhttps://github.com/openjdk/jmc
Download JMC 9https://www.oracle.com/java/technologies/javase/products-jmc9-downloads.html
Eclipse 4.30 – New and Noteworthyhttps://eclipse.dev/eclipse/news/4.30/
Add a rule to detect GC Inverted Parallelismhttps://bugs.openjdk.org/browse/JMC-8144
JDK Mission Control 9.0.0 Released! – Marcus Hirthttps://hirt.se/blog/?p=1477
JBS Issues Resolved in JMC 9https://bugs.openjdk.org/
JEP 421: Deprecate Finalization for Removalhttps://openjdk.org/jeps/421
Let checkpoint event sizes grow beyond u4 limithttps://bugs.openjdk.org/browse/JDK-8298129

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください