2

次のコマンドでJava仮想マシンを起動するかどうか疑問に思います。

-Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=256m 
-XX:+UseParallelGC -XX:ParallelGCThreads=4 -XX:+UseParallelOldGC 
-XX:LargePageSizeInBytes=4m -XX:-BindGCTaskThreadsToCPUs 

だから私は-Xmsが-Xmxに等しいサーバーを起動します私はJavaOSプロセスがOSからのメモリを永久に「保持」しますか?したがって、このJVMには2GBがあり、OSにある場合は、プロセスを開始できます。それ以外の場合はできません。

JVMが2GBで起動した後、OSのスワップメモリ​​を使用する可能性はありますか?

(したがって、スワップメモリ​​を使用せずに最初に起動した場合)

4

1 に答える 1

5

これにより、起動時に約2400MBの仮想メモリが使用されます。仮想メモリを返すことはありません。メインメモリを返すことはできますが、そうすることはめったにありません。

JVMが2GBで起動した後、OSのスワップメモリ​​を使用する可能性はありますか?

技術的にはそうですが、実際にはこれは非常に悪い考えです。実行時のGCは、すべてのメモリにランダムアクセスできることを前提としています。JVMがスワップを開始すると、JVMは長期間(数分)停止し、マシンをハングさせることさえあります。

32GBを約$200で購入できることを考えると、通常、ニーズに十分なメモリを購入する方が簡単です。

于 2012-12-19T20:45:52.033 に答える