今天分析了当前比较流行的几个不同公司不同版本JVM的最大内存,得出来的结果如下:
公司 | JVM版本 | 最大内存(兆)client | 最大内存(兆)server |
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 |
除非特别说明,否则JVM版本都运行在Windows操作系统下
附:如何获得JVM的最大可用内存
在命令行下用 java -XmxXXXXM -version 命令来进行测试,然后逐渐的增大XXXX的值,如果执行正常就表示指定的内存大小可用,否则会打印错误信息。
[root@localhost ~]# java -Xmx2679M -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)
[root@localhost ~]# java -Xmx2800M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
实际发现版本上有细微差别的JDK最大容许内存值都不尽相同,因此在实际的应用中还是要自己试验一下看到底内存能达到什么样的值。
如果你的机器的内存太多的话,只能通过多运行几个实例来提供机器的利用率了,例如跑Tomcat,你可以多装几个 Tomcat并做集群。