2012-07-09 108 views
4

根據JVM的文檔,如果使用太大的Xms參數,JVM將無法啓動。所以,我問,如果我不使用它會發生什麼?我的虛擬機是否允許無限增長?只有當物理內存用完時它纔會停止嗎?如果不使用Xmx會發生什麼情況?

回答

4

XMX是最大堆大小。

如果我不使用它會怎麼樣?

如果省略,則使用默認值。默認值因JVM版本以及運行的平臺而異。版本5 are here的詳細信息。

默認情況下,在服務器級機器上選擇以下項。

...的物理內存高達四分之一

最大堆大小1GB的

3

如果不指定-Xmx,那麼你將得到默認的配置爲您的操作系統,你的JVM,它的選項和版本。

鑑於可能會影響文檔的價值和時間的數量,可能會更容易問您的jvm。

例如我的Linux系統上:

$ java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version' 
uintx AdaptivePermSizeWeight    = 20    {product} 
uintx ErgoHeapSizeLimit     = 0    {product} 
uintx InitialHeapSize      := 66328448   {product} 
uintx LargePageHeapSizeThreshold   = 134217728  {product} 
uintx MaxHeapSize       := 1063256064  {product} 
uintx MaxPermSize       = 67108864   {pd product} 
uintx PermSize        = 16777216   {pd product} 
java version "1.6.0_24" 

因爲它默認爲-server,但-client我得到:

$ java -client -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version' 
uintx AdaptivePermSizeWeight    = 20    {product} 
uintx ErgoHeapSizeLimit     = 0    {product} 
uintx InitialHeapSize      := 16777216   {product} 
uintx LargePageHeapSizeThreshold   = 134217728  {product} 
uintx MaxHeapSize       := 268435456  {product} 
uintx MaxPermSize       = 67108864   {pd product} 
uintx PermSize        = 12582912   {pd product} 
java version "1.6.0_24" 

雖然我的Windows系統上,我得到:

C:\>java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version" 
uintx AdaptivePermSizeWeight    = 20    {product} 
uintx ErgoHeapSizeLimit     = 0    {product} 
uintx InitialHeapSize      := 16777216   {product} 
uintx LargePageHeapSizeThreshold   = 134217728  {product} 
uintx MaxHeapSize       := 268435456  {product} 
uintx MaxPermSize       = 67108864   {pd product} 
uintx PermSize        = 12582912   {pd product} 
java version "1.6.0_21" 

這是-client設置,似乎沒有-server選項:

C:\>java -server -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version" 
C:\>java -server -XX:+PrintFlagsFinal -version 
Error: no `server' JVM at `C:\jdk\jre\bin\server\jvm.dll'. 
相關問題