我有一个在具有 4GB RAM 的 Windows 2008 Server 上运行的 Tomcat 实例。该服务器专用于这一应用程序,因此我非常希望能够将大部分 RAM 专用于 Tomcat。我的 Tomcat 设置当前具有以下 java 选项:
-Xms256m
-Xmx1600米
我想增加 RAM 量,最好增加到 3GB 左右(显然我知道该怎么做,只需增加 -Xmx 值即可)。但是,如果我将最大堆空间增加到超过 1600MB,Tomcat 将拒绝启动。我读过的几个网站都说 Tomcat 不能使用超过 40% 的可用 RAM,这似乎与我所看到的一致。
有没有办法增加 Tomcat 可以使用的内存比例,以便我可以增加 Tomcat 可以使用的内存量?
最佳答案
您的问题可能与操作系统相关,而不是 Tomcat/Java。 Windows 操作系统将 32 位进程的内存分配限制为总共 2 GiB(默认情况下)。
它只允许您分配大约 1.5 GiB 堆空间的原因是因为还有其他内存分配给进程(JVM/库开销、永久代空间等)。
其他现代操作系统 [咳 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。太字节堆任何人:
关于java - Tomcat:调整内存比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519315/