调查一下Java最大能支持多少内存

时间:2021-10-16 19:03:55
要在Tomcat上部署一个耗内存的应用。记得以前在Linux上都是设-Xmx2048,windows上似乎不行。
测了一下,SUN jdk 1.6.0_05最大在我的机器上是1446M,IBM J9 VM 1.5.0在我的机器上是1812M。
想问问大家的机器上java最大能到多少?兼做个调查。
测试方法就是java -Xmx####M -version命令,####代表内存数,如果能正确打印出版本信息就算支持那么多内存。

凡回答具体数字着均给分(也可以看做散分啦)。

C:\Program Files\Java\jre1.6.0_05\bin>java -Xmx1446M -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM)  Client VM (build 10.0-b19, mixed mode)      //没有测Server状态

C:\Program Files\IBM\Java50\bin>java -Xmx1812M -version
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pwi32dev-20070511 (SR5))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20070426 (JIT enabled)
J9VM - 20070420_12448_lHdSMR
JIT  - 20070419_1806_r8
GC   - 200704_19)
JCL  - 20070511

btw: 技术区发帖是不是最多只能给100分?(这个问题不给分)

34 个解决方案

#1


该回复于2008-08-01 05:21:55被版主删除

#2


没试过~~~

#3


JDK1.5.10
最大内存1440MB
机器的内存为1.5GB

#4


C:\Documents and Settings\new>java -Xmx1447M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

C:\Documents and Settings\new>java -Xmx1446M -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)

机器内存1280M

#5


C:\Documents and Settings\adair>java -Xmx1447M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

C:\Documents and Settings\adair>java -Xmx1024M -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

1447不行】
1024可以
机子内存1024

#6


参考这个  http://www.java2000.net/viewthread.jsp?tid=118

以前有人问过。

#7


这个还没有试过

#8


RAM: 2048m
OS:   Vista
在 1592m 上下浮动。

#9


还没试过

#10


没试过

#11


引用 6 楼 java2000_net 的回复:
参考这个 http://www.java2000.net/viewthread.jsp?tid=118 

以前有人问过。

文章不错

#12


不同的系统不同的JVM最大都支持都不同

#13


刚刚研究过这个问题,在不同的系统下,不同的JVM版本都不一样。
http://www.baizeju.com/html/Java/200806/04-10.html

专门为这个问题问过国外的工程师,他们说64位OS下(他们用Suse Linux和Solaris),内存没有限制。不过我自己还没有试过。

#14


java version "1.6.0"
Java<TM> SE Runtime Environment <build 1.6.0-b105>
Java HotSpot<TM> Client VM <build 1.6.0-b105,mixed mode>

我内存就一个G·····

#15


该回复于2008-07-08 22:16:56被版主删除

#16


Windows下可以去到1610
C:\Documents and Settings\Administrator>java -Xmx1610M -version
java version "1.5.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode)

Linux 无止境:
[root@localhost ~]# java -Xmx100000M -version 
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b22, mixed mode)

#17


mark

#18


IE中我们的最大测试结果是512MB

#19


java -Xmx1446M -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode)

我笔记本最多也是1446M,1447就不行了

配置为VAIO V505CP,1G内存

#20


D:\>java -Xmx1446m -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode)

#21


I don't know

#22


谁是正确的?

#23


我输1446M不行,最多只能输到期1444M,java版本是1.50

#24


凭着里网友的实力应该是测不出来的。因为大家谁都没有超级电脑。

Java最大支持多少内存,
虽然Java语言不依存于OS,但是JVM的性能,跟OS、CPU等硬件有直接关系。
最起码用windows肯定是检测不出Java最大能支持多少内存,因为Windows本身就存在性能的瓶颈。

这里是SUN的一篇文章,
Java5.0,内存最大似乎支持到了500G
http://java.sun.com/developer/technicalArticles/Interviews/hamilton_qa.html

#25


C:\Documents and Settings\new>java -Xmx1446M -version 
java version "1.6.0_03" 
Java(TM) SE Runtime Environment (build 1.6.0_03-b05) 
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode) 

#26


不清楚

#27


这里的讨论有很多混淆的地方。我想这里大家关心的不是Java的能力,而是我们的应用真正能够使用多少内存。这个问题受到3方面(或者3个层次)的限制。

首先,你真正可用内存的大小。这里不仅仅是物理内存。一般操作系统都是支持虚拟内存的。物理内存不够的情况下用硬盘文件来模拟。这样只要在你正确设置硬盘虚拟内存文件大小(如果你有512M物理内存,你再设512M虚拟内存文件,你总共就有1G内存,你的Java应用怎么也超不过1G内存)的情况下,例如你有2G内存,你再设2G虚拟内存,那你可以用的最大内存就是4G。当然实际你可以用的内存还要受到下面这点的限制。

其次,我们的应用受到了操作系统内存支持能力的限制。大家大多数用的是32Bits的CPU,那么也是32Bits的操作系统。一般的WindowsXP可以支持到3G内存(好像改一下配置可以到3.5G,不过对我们的讨论没有影响),正常的Linux最大内存也是4G,可以重编译成支持8G内存的版本。去除掉操作系统本身使用的一部分内存,WindowsXP应用程序可以用的内存在2G-3G之间(假设你已经正确配置了物理内存和虚拟内存),Linux在3G-7G之间。

最后,JVM本身支持的最大内存。因为JVM也是一个应用,不同的版本在不同的OS上都有出入。基本WindowsXP上在1500M上下,大家最常用的Sun的JDK5,JDK6都在1450M左右。Linux上在2600M多。这篇文章有详细的测试过程和结果。(http://www.baizeju.com/html/Java/200806/04-10.html)

公司 JVM版本                  最大内存(兆)client    最大内存(兆)server
SUN 1.6.0                          1442                           N/a
SUN 1.5.x                          1492                            1520
SUN 1.5.5(Linux)             2634                            2660
SUN 1.4.2                          1564                            1564
SUN 1.4.2(Linux)             1900                            1260
IBM 1.4.2(Linux)             2047                             N/A
BEA JRockit 1.5 (U3)      1909                             1902 

#28



mark

#29


C:\Documents and Settings\user>java -Xmx1444M -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

C:\Documents and Settings\user>java -Xmx1445M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

winxp + sp2
jdk1.5.0_06-b05
机器内存1024M
java -Xmx1444M -version

#30


该回复于2008-07-09 11:43:33被版主删除

#31


引用 24 楼 froole 的回复:
凭着里网友的实力应该是测不出来的。因为大家谁都没有超级电脑。 

Java最大支持多少内存, 
虽然Java语言不依存于OS,但是JVM的性能,跟OS、CPU等硬件有直接关系。 
最起码用windows肯定是检测不出Java最大能支持多少内存,因为Windows本身就存在性能的瓶颈。 

这里是SUN的一篇文章, 
Java5.0,内存最大似乎支持到了500G 
http://java.sun.com/developer/technicalArticles/Interviews/hamilton_qa.html


我仅仅想知道一下普通windows PC能达到怎样的水平,有没有例外。
以便供我在项目部署的时候参考使用。

#32


引用 22 楼 yirentianran 的回复:
谁是正确的?


没有谁正确一说,都是正确的,针对自己的机器来说

#33


我曾经内存溢出,改过1024可是还是溢。

#34


C:\Documents and Settings\admin>java -Xmx1447M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

C:\Documents and Settings\admin>java -Xmx1446M -version
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode)


本机OS:WindsXP Memory:2G
正常:java -Xmx1446M -version
报错:java -Xmx1447M -version

#1


该回复于2008-08-01 05:21:55被版主删除

#2


没试过~~~

#3


JDK1.5.10
最大内存1440MB
机器的内存为1.5GB

#4


C:\Documents and Settings\new>java -Xmx1447M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

C:\Documents and Settings\new>java -Xmx1446M -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)

机器内存1280M

#5


C:\Documents and Settings\adair>java -Xmx1447M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

C:\Documents and Settings\adair>java -Xmx1024M -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

1447不行】
1024可以
机子内存1024

#6


参考这个  http://www.java2000.net/viewthread.jsp?tid=118

以前有人问过。

#7


这个还没有试过

#8


RAM: 2048m
OS:   Vista
在 1592m 上下浮动。

#9


还没试过

#10


没试过

#11


引用 6 楼 java2000_net 的回复:
参考这个 http://www.java2000.net/viewthread.jsp?tid=118 

以前有人问过。

文章不错

#12


不同的系统不同的JVM最大都支持都不同

#13


刚刚研究过这个问题,在不同的系统下,不同的JVM版本都不一样。
http://www.baizeju.com/html/Java/200806/04-10.html

专门为这个问题问过国外的工程师,他们说64位OS下(他们用Suse Linux和Solaris),内存没有限制。不过我自己还没有试过。

#14


java version "1.6.0"
Java<TM> SE Runtime Environment <build 1.6.0-b105>
Java HotSpot<TM> Client VM <build 1.6.0-b105,mixed mode>

我内存就一个G·····

#15


该回复于2008-07-08 22:16:56被版主删除

#16


Windows下可以去到1610
C:\Documents and Settings\Administrator>java -Xmx1610M -version
java version "1.5.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode)

Linux 无止境:
[root@localhost ~]# java -Xmx100000M -version 
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) 64-Bit Server VM (build 10.0-b22, mixed mode)

#17


mark

#18


IE中我们的最大测试结果是512MB

#19


java -Xmx1446M -version
java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode)

我笔记本最多也是1446M,1447就不行了

配置为VAIO V505CP,1G内存

#20


D:\>java -Xmx1446m -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode)

#21


I don't know

#22


谁是正确的?

#23


我输1446M不行,最多只能输到期1444M,java版本是1.50

#24


凭着里网友的实力应该是测不出来的。因为大家谁都没有超级电脑。

Java最大支持多少内存,
虽然Java语言不依存于OS,但是JVM的性能,跟OS、CPU等硬件有直接关系。
最起码用windows肯定是检测不出Java最大能支持多少内存,因为Windows本身就存在性能的瓶颈。

这里是SUN的一篇文章,
Java5.0,内存最大似乎支持到了500G
http://java.sun.com/developer/technicalArticles/Interviews/hamilton_qa.html

#25


C:\Documents and Settings\new>java -Xmx1446M -version 
java version "1.6.0_03" 
Java(TM) SE Runtime Environment (build 1.6.0_03-b05) 
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode) 

#26


不清楚

#27


这里的讨论有很多混淆的地方。我想这里大家关心的不是Java的能力,而是我们的应用真正能够使用多少内存。这个问题受到3方面(或者3个层次)的限制。

首先,你真正可用内存的大小。这里不仅仅是物理内存。一般操作系统都是支持虚拟内存的。物理内存不够的情况下用硬盘文件来模拟。这样只要在你正确设置硬盘虚拟内存文件大小(如果你有512M物理内存,你再设512M虚拟内存文件,你总共就有1G内存,你的Java应用怎么也超不过1G内存)的情况下,例如你有2G内存,你再设2G虚拟内存,那你可以用的最大内存就是4G。当然实际你可以用的内存还要受到下面这点的限制。

其次,我们的应用受到了操作系统内存支持能力的限制。大家大多数用的是32Bits的CPU,那么也是32Bits的操作系统。一般的WindowsXP可以支持到3G内存(好像改一下配置可以到3.5G,不过对我们的讨论没有影响),正常的Linux最大内存也是4G,可以重编译成支持8G内存的版本。去除掉操作系统本身使用的一部分内存,WindowsXP应用程序可以用的内存在2G-3G之间(假设你已经正确配置了物理内存和虚拟内存),Linux在3G-7G之间。

最后,JVM本身支持的最大内存。因为JVM也是一个应用,不同的版本在不同的OS上都有出入。基本WindowsXP上在1500M上下,大家最常用的Sun的JDK5,JDK6都在1450M左右。Linux上在2600M多。这篇文章有详细的测试过程和结果。(http://www.baizeju.com/html/Java/200806/04-10.html)

公司 JVM版本                  最大内存(兆)client    最大内存(兆)server
SUN 1.6.0                          1442                           N/a
SUN 1.5.x                          1492                            1520
SUN 1.5.5(Linux)             2634                            2660
SUN 1.4.2                          1564                            1564
SUN 1.4.2(Linux)             1900                            1260
IBM 1.4.2(Linux)             2047                             N/A
BEA JRockit 1.5 (U3)      1909                             1902 

#28



mark

#29


C:\Documents and Settings\user>java -Xmx1444M -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

C:\Documents and Settings\user>java -Xmx1445M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

winxp + sp2
jdk1.5.0_06-b05
机器内存1024M
java -Xmx1444M -version

#30


该回复于2008-07-09 11:43:33被版主删除

#31


引用 24 楼 froole 的回复:
凭着里网友的实力应该是测不出来的。因为大家谁都没有超级电脑。 

Java最大支持多少内存, 
虽然Java语言不依存于OS,但是JVM的性能,跟OS、CPU等硬件有直接关系。 
最起码用windows肯定是检测不出Java最大能支持多少内存,因为Windows本身就存在性能的瓶颈。 

这里是SUN的一篇文章, 
Java5.0,内存最大似乎支持到了500G 
http://java.sun.com/developer/technicalArticles/Interviews/hamilton_qa.html


我仅仅想知道一下普通windows PC能达到怎样的水平,有没有例外。
以便供我在项目部署的时候参考使用。

#32


引用 22 楼 yirentianran 的回复:
谁是正确的?


没有谁正确一说,都是正确的,针对自己的机器来说

#33


我曾经内存溢出,改过1024可是还是溢。

#34


C:\Documents and Settings\admin>java -Xmx1447M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

C:\Documents and Settings\admin>java -Xmx1446M -version
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode)


本机OS:WindsXP Memory:2G
正常:java -Xmx1446M -version
报错:java -Xmx1447M -version