java 1.5有默认的-xmx设置吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

出于兴趣-默认存在还是在每个操作系统上不同?

如果是这样,那么缺省值是多少?很难找到!

提问于
用户回答回答于

您可以在Java 5.0人体工程学文档中找到详细信息。特别:

  • 对于“server class”计算机(2个处理器,2 GB GB RAM),默认最大堆大小为物理内存的1/4,高达1G字节
  • 对于“regular”机器,它是64 MB。
用户回答回答于

正如Matt Solnit所回答的那样,对于java 1.5来说,对于服务器类的机器来说,具体的物理内存是1GB或者1/4,以较低者为准,对于其他机器(Java 5.0人体工程学文档)则为64MB 。

不幸的是,JVM会随着时间而改变,最适合的文档会变得更难以识别,所以要找到特定JVM的默认堆(和Per​​mGen堆)大小,找出最好的方法是让JVM告诉你。

在“1.6.0_06”和“1.6.0_21”之间的某个地方,该-XX:+PrintFlagsFinal选项已被添加,并且似乎首先在“1.6.0_23”左右引起人们的注意。它提供了有关JVM如何配置的大量信息,但我们将集中讨论堆和permgen的大小和限制。

Linux的

在Linux上,您可以使用以下命令:

java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'

视窗

同样在Windows上,您可以使用以下命令:

java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version"

笔记

  • 根据您的系统,java可能会默认为-client-server,因此如果您强制您的应用程序以其中任何一个开始,那么您在启动这些命令时也可以执行相同的操作。

例子

在我的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'.

总结:

Parameter \ JVM             1.6.0_24                   
                            Lin/svr  Lin/cli  Windows  
InitialHeapSize               63MB     16MB     16MB   
LargePageHeapSizeThreshold   128MB    128MB    128MB   
MaxHeapSize                 1014MB    256MB    256MB   
MaxPermSize                   64MB     64MB     64MB   
PermSize                      16MB     12MB     12MB   

扫码关注云+社区