0

Windows に 6 GB の RAM と 5 GB の空きメモリ領域をインストールしました。Java ヒープ領域 -Xmx2048m を指定して Java プログラムを実行すると、正常に動作します。私の質問は、Linuxボックスにこれがある場合はどうなるかです

猫/proc/meminfo

 MemTotal: 10.130464 kB (10.1gb)
 MemFree : 248.736 kB (248mb)

このメモリを搭載した Linux で -Xmx2048m を指定して Java プログラムを実行するとどうなりますか?

4

1 に答える 1

1

Java では、ヒープを Xmx 値まで大きくすることができますが、必ずしもその値から開始したり、それほど使用する必要があるとは限りません。Xms は最小ヒープ サイズを指定します。これは、Java が最初に割り当てるヒープ メモリの量です。Java は Perm Gen に追加のメモリを割り当てます。Java に限らず、どのプログラムも、使用可能なメモリがないときに追加のメモリが必要になると、失敗し始めます。特に Java は、Xmx に達するか、マシンに使用可能なメモリがない場合に OutOfMemoryError をスローします。
MemFree は、残っている物理メモリの量ですが、使用可能なメモリの合計量ではありません。物理メモリがいっぱいになると、オペレーティング システムはスワップ領域 (SwapTotal と SwapFree) を使用します。通常、スワップ領域はハードディスク上にあるため、非常に低速です。Linux は、パフォーマンスを維持するために最も頻繁に使用されるメモリ ブロックを物理メモリに保持しようとしますが、通常は速度が低下します。比較的少量の空き物理スペースが残っていることを考えると、Linux ボックスはすでにスワップ スペースを使用している可能性があります。MemFree と SwapFree を組み合わせて、使用可能なメモリの合計を取得します。
編集: 合計 1.8GB の物理メモリとスワップ フリーを使用すると、最初に Xms (最小ヒープ) と PermGen メモリを使用するため、Java を起動できます。これは、デフォルトで 10GB の物理 RAM (1/64 物理メモリと 64MB PermGen) で 220MB になります。 . プログラムが実行されると、使用可能なシステム メモリの残りを使用できますが、それはプログラムが実際にそれを必要とする場合に限られます。このプログラムがリソースを大量に消費しない場合は、下位にとどまる可能性があります。通常、すべてのメモリを使用しないように Xmx を設定する必要があります。メモリ使用量が非常に多い場合は、他のプログラムを終了することをお勧めします。

于 2015-04-22T02:02:27.217 に答える