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ランキング
-
ファミコンって8ビットしかない...
-
C言語における再帰呼び出しの...
-
マインスイーパ、自動解析プロ...
-
アプリケーション上の文字を画...
-
大容量のメモリ確保をスワップ...
-
緯度、経度の 10進法と 60進法...
-
Macターミナルで実行中のプログ...
-
ショッピング
-
Webプログラムってネイティブア...
-
CGIの記述について教えてくださ...
-
B列に特定の文字列が入っている...
-
Excel VBA 自動的に閉じるMsgBox
-
UdpClient 送信元のIPアドレ...
-
clock関数は正確じゃないの?
-
VBA
-
explorer.exeが異様にメモリを食う
-
OpenCVでRGBをHSVに変換する
-
英数文字列のうちの数値を4桁に...
-
DoEvents関数って何?
-
手動かプログラムでの起動かの判断
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で、メモリを解放しないで...
-
VBAの配列サイズとメモリに関して
-
「ヒープサイズの設定」て何?
-
C言語における再帰呼び出しの...
-
エクセルVBA 大容量CSVファイル...
-
動的メモリとexit(C言語)
-
エクセルのメモリ使用状況/Appl...
-
メモリが不足しています(VBA)
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
メモリのセグメント違反の解決...
-
EXCEL-VBAにてADOのレコードセ...
-
メモリ不足
-
エクセル キャッシュメモリー...
-
【C言語】再帰が時間がかかる...
-
C#のOutOfMemoryException発生...
-
closeとメモリの開放について
-
バッチファイルでの実行EXEのメ...
-
メモリの解放について VB6 VBA
-
「memcpy」と「strcpy」について
おすすめ情報