PR:この記事にはアフィリエイトリンクが含まれます。
Java本でJVMのGCやメモリ解析を学ぶと、用語の先で迷うことがあります。ログのどの数字を追い、仮説をどう確かめるか。実務では、その道筋まで示す本が頼りになります。設定を変えるときも、まず原因を見極めたいですよね。
GC回数が増えた、ヒープ使用量が戻らない、p99の応答時間が急に跳ねる。症状が似ていても背景は別々です。GC停止時間が原因か、負荷やオブジェクトの保持が原因かを見分ける視点が、改善の出発点になります。
本の早見表
4冊の言語や対象読者、主に扱う手法を一覧にしました。全体の範囲を見てから各書の詳細へ進むと、内容をつかみやすくなります。
| 書籍 | 言語・対象 | 主な内容 |
|---|---|---|
Javaパフォーマンス | 日本語・Java開発者 | 測定、JIT、GC、ヒープとネイティブメモリ |
Java Memory Management | 英語・メモリ解析の入門者 | JVMメモリ、GC方式、jstat、jmap、VisualVM |
Troubleshooting Java 第2版 | 英語・中級者 | プロファイリング、ヒープダンプ、GCログ |
Optimizing Cloud Native Java 第2版 | 英語・中上級者 | GC設定、可観測性、クラウド環境の調査 |
日本語で全体像を学ぶ書籍と、英語で個別の調査手法を深める書籍があります。JDK世代や扱うツールも異なるため、表の項目を各書の詳しい内容と照らしてみてください。
本を読む目的がJVMの仕組みの整理か、稼働中の問題調査かで読みどころは変わります。現場の症状を思い浮かべると、内容と実務を結びつけやすくなります。
JVMのメモリ像
JVMが使うメモリには複数の領域があります。ヒープはオブジェクト用で、Metaspaceはクラス情報を持ち、スタックはスレッドごとにあります。JITコンパイル後のコード領域や直接バッファーなどのネイティブメモリも使われます。
-Xmxはヒープの上限を設定する値です。大きくしてもプロセス全体のメモリがその範囲に収まるとは限りません。コンテナでメモリ不足が起きたら、スレッド数やネイティブ領域も調べましょう。
OutOfMemoryErrorの表示も調査の手がかりです。Java heap space、Metaspace、unable to create native threadでは原因を探す場所が異なります。エラーと発生時のメトリクスを並べれば、次に見る領域を絞れます。
GC観測の基本
GC回数単独で良否を判断するのは早計です。メモリの割り当て速度やGC後に残る量、停止が応答時間に与える影響を合わせて確認します。
若い世代のGCが頻繁でも、停止が短くGC後の使用量が安定していれば、ただちに問題とは言えません。反対に、GC後のヒープ使用量が増え続けるなら、長く参照されるオブジェクトやキャッシュの膨張が疑われます。
状況の記録にはjstat、JFR、GCログを使えます。それぞれ見える情報の粒度が異なります。リクエスト量やp95・p99の応答時間と同じ時間軸で記録すると、GCと遅延の関係を追いやすくなります。
ダンプ解析の要点
ヒープダンプは、ある時点で生きているオブジェクトと参照関係を調べる材料です。オブジェクト単体の浅いサイズと、参照先まで含めた保持サイズを比べると、どのオブジェクトがメモリを保持しているかが見えてきます。
調査ではGC Rootsから対象までの参照経路をたどります。たとえば大きなコレクションや想定以上に残るキャッシュ、解除されないリスナー、スレッドローカルへの保持が確認対象です。アプリケーションの設計と照らすと、原因を絞れます。
ヒープダンプには文字列や業務データが含まれる場合があります。保存先のアクセス権と保管期間を決め、調査用ファイルを慎重に扱ってください。
Javaパフォーマンス
Scott Oaks著『Javaパフォーマンス』は、オライリー・ジャパン刊の日本語書籍です。2015年4月11日発行の448ページで、対応バージョンはJava 8。性能測定からJVMの監視、GCまで日本語で広く学びたい開発者におすすめです。
性能テストやベンチマーク、監視ツール、JITコンパイル、GC、ヒープとネイティブメモリの改善を扱います。GCの動的分析やヒープダンプの事後分析もあり、計測から原因調査までを一冊で学べます。
Java 8世代の仕組みを日本語で体系的に読みたいなら、この本をおすすめします。参考価格は税込4,290円で、公式の希望小売価格・定価が目安です。実売価格は時期や店舗によって変わります。現在のJDKで使う設定やコマンドは公式資料で差分を確認してください。
メモリ管理の入門
『Java Memory Management: A Comprehensive Guide to Garbage Collection and JVM Tuning』は、Maaike van Putten氏とDr. Seán Kennedy氏によるPackt刊の英語書籍です。第1版は2022年11月25日発行、146ページ。メモリの基本から調査へ進みたい人に読みやすい分量です。
スタック、ヒープ、Metaspaceなどのメモリ領域とGC方式、メモリリークを扱います。jstat、jmap、VisualVMによる指標の取得やプロファイリングに加え、ヒープやスレッドスタックの設定、GC監視も学べます。
英語で読み進められ、用語と調査ツールのつながりを短い本で把握したい人におすすめです。各メモリ領域の役割やツールで観察できる情報を、ひと通り整理するのに適しています。
障害調査の実務
Laurențiu Spilcă著『Troubleshooting Java, Second Edition』は、Manning Publications刊の英語書籍です。第2版は2025年10月発行の360ページで、実際のアプリケーションの問題を調べたい中級Java開発者が対象です。
VisualVM、Heap Dump Analyzer、IntelliJ IDEA Debuggerを使い、プロファイリングからヒープダンプ、GCログ分析まで扱います。新しいJavaツールやAIを使った調査も取り上げ、障害の兆候から原因の候補を絞る手順を紹介しています。
稼働中や検証中に起きた問題を、ツールを使って調査する力を伸ばしたい人におすすめです。参考価格は59.99米ドルで、公式の希望小売価格・定価が目安。実売価格は時期や販売店によって変わります。
クラウドJVM最適化
Benjamin J. Evans氏とJames Gough氏による『Optimizing Cloud Native Java: Practical Techniques for Improving JVM Application Performance』は、O’Reilly Media刊の英語書籍です。第2版は2024年10月発行、500ページで、中級から上級のJava技術者を対象にしています。
GCの基礎に加え、G1、Shenandoah、ZGC、OpenJ9 Balancedと各GCの設定を扱います。VisualVM、JDK Mission Control、async-profiler、JFR、ヒープダンプなど、調査に使う手段も幅広く取り上げています。
クラウド上のメモリ不足や応答性能を測定し、可観測性も含めて改善したい人におすすめです。複数のGCを同じ条件で評価したり、性能テストを運用につなげたりする際に、扱う範囲の広さを活用できます。
実務の判断軸
アクセス量が落ち着いた後も、GC後のヒープ使用量が数時間にわたって上がり続けることがあります。その場合は設定を変える前に、ダンプ上の保持サイズが大きいオブジェクトと参照元を調べると、原因を絞れます。
GC後のヒープが安定している一方で、負荷時だけ応答が遅いなら、割り当て率やGC停止時間、CPU使用率を負荷量と並べて確認します。変更前後の条件をそろえ、遅延やスループットを比べれば、設定変更の効果を説明できます。
-Xmsや-Xmx、GC方式を変えた後は、同じ入力と負荷で再計測し、期待した指標と副作用を確認します。GC回数に加えて応答時間と安定性も見て、改善を判断してください。
結論
Javaパフォーマンスを日本語で性能測定、GC、メモリ解析を幅広く学ぶなら『Javaパフォーマンス』がおすすめです。短い本でメモリ構造と調査ツールを把握したい人には『Java Memory Management』が合います。
障害調査の手順を深めたい中級者には『Troubleshooting Java』をおすすめします。複数のGCやクラウドでの性能検証まで学ぶなら、『Optimizing Cloud Native Java』を選んでください。
設定値を覚えるだけでは、チューニングの根拠になりません。計測値と仮説を照らし、変更後の結果を確かめる。その積み重ねが、根拠を説明できる改善につながります。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。





