我在具有4GB RAM的Windows 2008 Server上运行Tomcat实例。服务器专用于这一个应用程序,所以我非常希望能够将大部分RAM专用于Tomcat。我的Tomcat设置目前有以下java选项:
-Xms256m
-Xmx1600m
我想增加RAM的数量,最好是大约3GB(显然我知道怎么做,只需增加-Xmx值)。但是,如果我将最大堆空间增加到1600MB以上,Tomcat就会拒绝启动。我读过的几个网站都说Tomcat不能使用超过40%的可用RAM,这看起来与我所看到的一致。
有没有办法增加Tomcat可以使用的内存的比例,这样我就可以增加Tomcat可以使用的内存的数量?
谢谢, 瑞克
答案 0 :(得分:3)
您的问题可能与操作系统有关,而不是Tomcat / Java。 Windows操作系统将32位进程的内存分配限制为总共2 GiB(默认情况下)。
它只允许你分配大约1.5 GiB堆空间的原因是因为还有其他内存分配给进程(JVM /库开销,perm gen space等)。
其他现代操作系统[ cough Linux]允许32位进程使用4 GiB可寻址空间的全部(或大部分)。
也就是说,64位Windows操作系统可以配置为将32位进程的限制增加到4 GiB(32位为3 GiB):
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx
但是,正如您所做的那样,最佳解决方案是在64位操作系统上使用64位JVM。 Terabyte堆积任何人:
答案 1 :(得分:2)
尽管有64位服务器,我只安装了32位Java / Tomcat。我卸载了Java和Tomcat并安装了64位版本,一切正常。似乎问题是32位Java只能处理1.5 GB。
谢谢, 瑞克