SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【最新Javaアップデート解説】変更点と過去バージョンからのおさらい

【Java 25リリース】JFR(Java Flight Recorder)の改善点を紹介

【最新Javaアップデート解説】変更点と過去バージョンからのおさらい 第8回

 2025年9月に最新のLTSバージョンであるJava25がリリースされました。前回は、主にプログラムに関連する機能を紹介しました。今回は、運用監視で活用される Java Flight Recorder(JFR)の改善点に焦点を当てて解説します。 

JFRの概要とアップデート概要

 Java Flight Recorder(JFR)は、Java アプリケーションのパフォーマンス分析や障害調査を目的とする「フライトレコーダー」的なツールで、本番環境でも極めて低オーバーヘッドで継続監視が可能な点が特徴です。

 クラウドやコンテナ環境にも対応しており、コンテナのリソース情報なども自動記録することで、「性能低下の原因がコード由来か環境(リソース)由来か」を効率的に切り分けられます。さらに、最近のバージョンでは、詳細なイベントの追加や設定の柔軟性向上が進んでおり、運用時のトラブルシューティングやプロファイリングがより強力かつ扱いやすくなっています。

 例えば、Java 25ではJFRの運用価値をさらに高める以下の改善が行われています。本稿では、Java 25 で改善されたポイントに加え、JFR の導入手順から新機能の活用法までを順を追って説明します。

表1:Java25でリリースされたJFRに関する変更点
JEP番号 概要
JEP509 JFR(Java Flight Recorder)CPU時間プロファイリング(実験的ステータス)
JEP518 JFR(Java Flight Recorder)のサンプリング精度改善
JEP520 JFR(Java Flight Recorder)のメソッドの実行時間計測及びトレース機能の改善

JFRによる解析の一連の流れ

 JFR を用いたパフォーマンス解析は、主に以下の3つのステップで進行します。

(1)記録の開始

 JFRで記録を開始するには、次の2つの方法があります。

  • Javaプロセスを起動する際にJVMオプションを指定して開始する方法
  • 既に起動しているJavaプロセスに対して、jcmdコマンド(JDKに含まれる診断ツール)を使って記録を指示する方法

 起動時オプション指定の方法と比べて、jcmdを利用する方法は後からプロファイリング条件を変えられたり、任意のタイミングで記録を始めたり/止めたりできるため、より柔軟な使い方が可能です。本稿ではjcmdを使った方法を中心に紹介します。

(2)データの取得(プロファイル情報を記録したファイルの作成)

 プロファイリングデータ(.jfrファイルなど)が生成される方法として、主に次の2つがあります。

  • 記録開始時にあらかじめ指定したファイル名に従って自動的に出力される
  • 実行中または記録中のプロセスに対してjcmdを使って、現在までの状況を指定ファイルに書き出す

(3)解析

 作成されたプロファイルデータを解析/可視化する主な方法は次のとおりです。

  • JDK Mission Control(JMC)ツールを使ってGUIで参照する(別途ダウンロードが必要)
  • jfrコマンド(JDKに含まれるコマンドラインツール)を使って参照する
  • その他、サードパーティ製プロファイラ(例:IDE内蔵機能など)を使う

 この中でも、もっとも視覚的で使いやすいのはJMCです。ダウンロードはJMCの公式ページから可能です。解析画面では、スレッドCPU使用率やヒープイベント、メソッド実行統計などを図1のように確認できます。

図1:JMCの画面例
図1:JMCの画面例

次のページ
jcmdコマンドの基本的な流れ

この記事は参考になりましたか?

【最新Javaアップデート解説】変更点と過去バージョンからのおさらい連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22548 2025/11/21 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング