

「リソースモニターのプロセスの仮想メモリ量がJavaのオプションで指定した最大ヒープサイズを超過する」
Javaアプリでリークが発生しているために調査しているのですが、
Windows7ProSP1 の環境でリソースモニターで当該プロセスの状況をチェックしていたところ、
JVMのオプション -Xmx で指定した最大ヒープサイズの3倍程度のサイズがコミットの仮想メモリ量として
表示されました。(指定:1GB、コミット:約3GB)
Javaのヒープサイズの上限をはるかに超過するという事象が、
メモリリークの問題に関係するのか、それともリソースモニターではそのような現象は
普通に発生するのかという疑問が課題として発生してしまいました。
調査した範囲ではこのような現象についての情報が見つかりませんでしたので、
ご存知の方がおられましたらご協力をお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>システムヒープメモリの倍以上になっており、ヒープメモリ外のメモリがそんなに必要なのかという懸念が残ります。
一番でかい「実行コードが展開されるメモリ」が抜けてました。
ヒープメモリ以外のメモリには、DLLが確保したメモリ等も含まれます。
DLLの使用状況によっては、DLLそのもののサイズも仮想メモリの使用量に含まれる場合もあります。
DLLが使用する分や実行コードも入れたら、3GBは軽く行きそうな気がしますが、如何でしょうか?
今の状況が不正なのか正常なのか知りたいなら、Javaアプリで「ボタンを押したら終了するだけの簡単なアプリ」を組んで、そのテスト用アプリを動かしたときのメモリ状況と比べれば良いでしょう。
-Xmxでヒープサイズを1GBにしてそのテスト用アプリを動かしたとき、コミットの仮想メモリ量が3GB近ければ「それが正常」と判ります。
ご回答ありがとうございます。
ですが、初期起動状態では仮想メモリは100~200MB程度で、殆どのメモリは
処理実行中に動的に増加したメモリリソースです。
また、Javaアプリなので外部ライブラリは Jar で提供されていますので、
DLLは登場しないのですが。
No.1
- 回答日時:
プロセスの仮想メモリ量は、自身がスワップアウトした際の、システムヒープメモリ+システムメモリ+データメモリ+静的ワークメモリ+その他のメモリのサイズになります。
一方Javaの最大ヒープサイズ指定は、システムヒープメモリの最大のみを指定するモノで、プロセスの使用メモリサイズの最大を指定するモノではありません。
ご回答ありがとうございました。
ただ、教えて頂いた システムメモリ+データメモリ+静的ワークメモリ+その他のメモリ が
システムヒープメモリの倍以上になっており、ヒープメモリ外のメモリがそんなに
必要なのかという懸念が残ります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 3 2022/12/15 22:07
- CPU・メモリ・マザーボード 「コンピューターのメモリが不足しています」 5 2022/12/15 10:10
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- モニター・ディスプレイ Win11マルチディスプレイでの異なる仮想デスクトップの表示 3 2023/02/01 10:02
- UNIX・Linux VirtualBox ゲストOSにPC内蔵HDDのパーティションをマウントする方法は? 2 2023/05/06 22:52
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
- モニター・ディスプレイ ワイドモニターの解像度が合わずMacの画面が横に伸ばされて表示されてしまう 2 2022/08/09 07:53
- デスクトップパソコン intel hdグラフィックス3000 4 2022/10/03 14:14
- Photoshop(フォトショップ) ピクセルとモニターサイズについて 1 2022/11/02 17:18
- 作詞・作曲 DTM DAWとmidiキーボードについて 1 2022/10/20 16:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリのセグメント違反の解決...
-
計算速度が遅い
-
VBAの配列サイズとメモリに関して
-
メモリが不足しています(VBA)
-
PC-98で拡張メモリを使え...
-
C言語で、メモリを解放しないで...
-
変数のスコープはどうするのが...
-
メモリ不足
-
malloc関数の使い終わった後の...
-
ルネサスマイコン(R8C) ビルド...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
組み込み系でのmallocについて
-
エクセルVBA 大容量CSVファイル...
-
バッチファイルでの実行EXEのメ...
-
コンパイラの違いについて
-
Macターミナルで実行中のプログ...
-
家電製品の電力周波数を変える機械
-
バックグラウンドのプロセスの...
-
C# シリアル通信でデータ受信...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリが不足しています(VBA)
-
メモリのセグメント違反の解決...
-
「memcpy」と「strcpy」について
-
メモリ不足
-
「ヒープサイズの設定」て何?
-
エクセルのメモリ使用状況/Appl...
-
C言語における再帰呼び出しの...
-
ファイルマッピング関数で失敗
-
ExitProcessの関数コールについ...
-
EXCEL-VBAにてADOのレコードセ...
-
エクセルVBA 大容量CSVファイル...
-
ExcelのVBAでメモリ解放できない
-
メモリを解放しないとどうなる?
-
バッチファイルでの実行EXEのメ...
-
Bitmapを重ね合わせる方法
-
ルネサスマイコン(R8C) ビルド...
-
C,C++プログラムの強制終了時の...
-
C言語:関数のメモリ上でのサイ...
おすすめ情報