应用服务器最大内存限制

时间:2011-03-18 09:40:44

标签: java memory jboss limit max

服务器(Jboss,Tomcat等)可以使用多少内存?例如,如果服务器有128GB的内存,它可以使用至少100GB的内存吗?我正在为我的本地使用这些参数:

-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512

这些参数是否可以配置为使用100gb?

3 个答案:

答案 0 :(得分:8)

我们使用它来运行24GB 64位JVM,并且每秒提供超过100页的请求,同时进行亚秒级GC暂停:

-Xms24g -Xmx24g -XX:MaxPermSize=256m -XX:NewRatio=4 -XX:SurvivorRatio=8    
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC  
-XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled  
-XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68

如果服务器有内存,则不应该有任何原因指定100GB。由于我们使用的是32GB以下,我们还使用-XX:+UseCompressedOops来减少64位寻址的开销。此外,我们使用-XX:+UseLargePages来获得更好的性能,但您必须首先为您的操作系统启用大页面支持。

答案 1 :(得分:4)

正如Mat所说,那些巨大的堆可能会出现垃圾收集问题,但是随着堆积​​很大,你可能正在使用一个多核机器,你可以使用一个基本上运行在它自己的核心上的收集器。

否则-Xm接受'g'单位,以便您可以写-Xmx100g

java的Manpage(在OS X上)说:

  

在Mac OS X平台上,上层   运行时限制此值   32位模式(-d32)约为                              2100米减去间接费用金额,和   大约127吨减去开销   在64位模式下运行时的数量                              (-d64)。在Solaris 7和Solaris 8 SPARC上   平台,这个的上限   价值约为4000米                              减去间接费用。在Solaris 2.6上   和x86平台,上限是   大约2000米减去                              间接费用。在Linux平台上,上层   限制约为2000米减去   间接费用。

答案 2 :(得分:3)

对于那种堆大小,你会遇到(可能)戏剧性的GC暂停。 (除此之外,只要您运行64位虚拟机,我不知道有什么限制)

与您的问题没有直接关系,但我发现这个Google TechTalks video on Ehcache很有趣--Greg Luck在那里讨论堆大小问题。