OS(solaris)のコマンドにてjavaプロセスが使用しているメモリの使用率を把握したいと思っています。
自分の認識では大きく分けると
ヒープ領域とネイティブ領域の二つがある認識なのですが、
JVM起動の際にオプションとしてヒープ領域を設定した場合、
ネイティブ領域の割り当てはどのようにして行われるのでしょうか?
JAVA_OPTIONS="-hotspot -DWLSERVER_MAIN -Xms256m -Xmx256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=8 -XX:MaxPermSize=128m
上記オプションにて起動し、OSのプロセス毎のメモリ使用率にて
起動したJVMのプロセスのメモリ使用量を確認すると下記のようになっています。
prstat -u weblogic
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
26603 weblogic 515M 143M sleep 58 0 0:06.32 8.3% java/56
この場合
515MB - 256MB(ヒープ領域) = 259MB(ネイティブとして使用される領域)
という認識でいいのでしょうか?
以上、宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
遅れました。
> javaオプションにてスタックサイズをしてしなかった場合...
ベンダのJVM実装によって違いがあるのですが、通常は512KBの連続メモリ空間です。
最大値という捕らえ方で問題ないと思います。
当然このスタックを超えるオブジェクト管理をJVMが行うとstack overflowという現象が発生します。
メモリの壁の話は少し早計だった気がします。すみません。
OSの管理する物理メモリに対しアプリケーションヒープの壁が存在します。
それが例えばWindowsの場合2GB、Linux(RH)の場合3GBといった具合です。
ネイティブメモリに関しては最初のご質問内容にある通りで恐らく間違いないと思います。
# すみません、保証できません
この手の内容ならsunにQ&Aを出すと意外とすんなり回答が来そうな気がします。
No.1
- 回答日時:
基本的な認識はあっていますが、Java以外のプロセスが消費しているメモリを忘れずに計算しなければいけません。
あとネイティブメモリサイズには2GBもしくは3GBという壁が存在します。
さらに言うとOSの稼働時間が長くなるにつれメモリの断片化が進みますので
空き容量が十分であっても、連続するアドレス空間が獲得できずにOutOfMemoryを発生するパターンもあります。
これはJVM内でも言えることです。
システム要件にもよりますが、通常はあまりネイティブメモリのサイズをキャパプラ時の重要事項にはしません。
他に知りたいことがあれば再度質問してください。
この回答への補足
すいません追加でもう一点。
javaオプションにてスタックサイズをしてしなかった場合、
デフォルトのサイズは512KBとという記載を見つけたのですが、
これは1つのスタック(スレッド)にて使用する最大サイズが
512KBと考えていいのでしょうか?
それとも最小値が512KBという事でしょうか?
以上、宜しくお願いします。
回答ありがとう御座います。
>基本的な認識はあっていますが、Java以外のプロセスが消費しているメモリを忘れずに計算しなければいけません。
プロセス毎の使用率を表示しているため、javaのプロセスで使用している領域には間違いないと思います。
>あとネイティブメモリサイズには2GBもしくは3GBという壁が存在します。
このサイズは仮想アドレス空間のサイズという事ですか?
もし、物理搭載メモリが1GBだった場合。
JVMが起動した際に、JVMのプロセスに割り当てられる仮想アドレス空間のサイズはどのようにして決まるのでしょうか?
以上、宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- Gmail GmailでのPOPメールの保存先はどこなのか 3 2022/06/09 02:06
- デスクトップパソコン ん~…分からん 7 2022/06/10 10:47
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- CPU・メモリ・マザーボード ストリーミングの一時処理用の領域について 1 2023/04/11 21:55
- UNIX・Linux Linux(Fedora30)のブートディスクの交換について 2 2023/05/16 13:17
- 物理学 示すように,真空中の直交座標系を考える。y平面に平行な つ領域Iと領域Iがあり,軸上の領域Iと領域I 1 2023/06/25 14:46
- Windows 10 実装メモリとタスクマネージャーのメモリ使用量不一致について 4 2022/12/15 01:07
- CPU・メモリ・マザーボード デスクトップPCのOS(C:)の空き領域がどんどん減ります。 9 2022/12/12 09:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
sil_rew_memのメモリアクセスに...
-
[ちょっと息抜き]メモリを解放 ...
-
VB.netでUSBメモリの固有I...
-
メモリ不足
-
C#で別クラスインスタンスのメ...
-
malloc関数の使い終わった後の...
-
C言語における再帰呼び出しの...
-
メモリアロケーション異常の発...
-
メモリの消費量について
-
メモリのセグメント違反の解決...
-
仮想メモリの増やし方
-
ReadEventLogについて
-
FindFirstFile ハンドル開放
-
<jsp:include>の属性、flushに...
-
エクセル キャッシュメモリー...
-
メモリの解放について VB6 VBA
-
C言語 昇順・降順 ソート
-
ちなみに、for (i = 0; str[i] ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
エクセルVBA 大容量CSVファイル...
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
メモリが不足しています(VBA)
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
メモリのセグメント違反の解決...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
エクセル キャッシュメモリー...
-
【C言語】再帰が時間がかかる...
-
C#のOutOfMemoryException発生...
-
closeとメモリの開放について
-
バッチファイルでの実行EXEのメ...
-
メモリの解放について VB6 VBA
-
「memcpy」と「strcpy」について
おすすめ情報