ヒープの確認

ここでは、「メモリー(ヒープ)」タブを表示させてみます。下のスクロールバーで過去の時間のデータを参照したり、左上にある虫眼鏡ボタンでグラフの拡大/縮小を行うことができます。

それでは、スクロールバーを左に移動させ、起動直後のヒープの動きを見てみましょう。


メモリー(ヒープ)ビュー
図2:メモリー(ヒープ)ビュー
(画像をクリックすると別ウィンドウに拡大図を表示します)

グラフを見ると、ヒープサイズが徐々に大きくなっていることがわかります。これはJavaVMが自動的にヒープを割り当てていることを意味します。 アプリケーションの起動や、たまに処理が遅くなる場合は、ヒープメモリの自動割り当て処理が動いている可能性があります。アプリケーションサーバに割り当 てるメモリのサイズが決まっている場合は、ヒープサイズの下限と上限をそのサイズに指定しておくと良いでしょう。

使用済みヒープの確認

次に、ペットストアのアプリケーションにWebブラウザからアクセスしてみましょう。URLは「第1回:プロファイラとは」で解説したように、以下の通りになります。



http://サーバのIPアドレス/jpetstore/

   さて、Webブラウザからアプリケーションにアクセスしたとき、NetBeans Profilerの画面はどのように表示されるでしょうか。


Webブラウザでアクセス中のメモリー(ヒープ)ビュー
図3:Webブラウザでアクセス中のメモリー(ヒープ)ビュー
(画像をクリックすると別ウィンドウに拡大図を表示します)

少し使用済みヒープが増えたようにみえます。しかし、単調増加ではなく、増えたり減ったりしているようです。ヒープが増えているのは、アプリケーションがオブジェクトを生成したためで、ヒープが減っているのはGCが発生してJavaVMが不要なオブジェクトをヒープから削除しているためです。

ここで、グラフが以下の図4のようになったとします。


メモリリーク中のメモリー(ヒープ)ビュー
図4:メモリリーク中のメモリー(ヒープ)ビュー
(画像をクリックすると別ウィンドウに拡大図を表示します)

これはGCが発生しているのにもかかわらず、使用済みヒープサイズがなかなか減っていない状況です。なぜなら、ヒープから削除してもよいとJavaVMが判断できるオブジェクトがないためです。

GCについては、「メモリー(GC)」タブも併せて参照するとよいでしょう。「メモリー(GC)」や「メモリー(ヒープ)」画面を表示させたときに以下のような状態であれば、アプリケーションの実装やサーバの設定を見直す必要があります。


  • 生存中世代が一方的に増えている
  • 相対GC時間が一方的に増えている
  • GCが発生しているのに使用済みヒープサイズが小さくならない
表2:設定を見直すべき状況

具体的には、以下のような対策が考えられます。


  • ヒープサイズを増やす
  • 巨大なオブジェクトをメモリに保持していないか確認する
  • メモリを無駄使いしているオブジェクトがないか調査する
表3:とるべき対策

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30