Tomcat:调整内存比例

时间:2012-03-01 15:50:34

标签: java web-applications tomcat jvm heap-memory

我在具有4GB RAM的Windows 2008 Server上运行Tomcat实例。服务器专用于这一个应用程序,所以我非常希望能够将大部分RAM专用于Tomcat。我的Tomcat设置目前有以下java选项:

-Xms256m

-Xmx1600m

我想增加RAM的数量,最好是大约3GB(显然我知道怎么做,只需增加-Xmx值)。但是,如果我将最大堆空间增加到1600MB以上,Tomcat就会拒绝启动。我读过的几个网站都说Tomcat不能使用超过40%的可用RAM,这看起来与我所看到的一致。

有没有办法增加Tomcat可以使用的内存的比例,这样我就可以增加Tomcat可以使用的内存的数量

谢谢, 瑞克

2 个答案:

答案 0 :(得分:3)

您的问题可能与操作系统有关,而不是Tomcat / Java。 Windows操作系统将32位进程的内存分配限制为总共2 GiB(默认情况下)。

它只允许你分配大约1.5 GiB堆空间的原因是因为还有其他内存分配给进程(JVM /库开销,perm gen space等)。

Why does 32-bit Windows impose a 2 GB process address space limit, but 64-bit Windows impose a 4GB limit?

其他现代操作系统[ 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堆积任何人:

Max memory for 64bit Java:D

答案 1 :(得分:2)

尽管有64位服务器,我只安装了32位Java / Tomcat。我卸载了Java和Tomcat并安装了64位版本,一切正常。似乎问题是32位Java只能处理1.5 GB。

谢谢, 瑞克