java - Tomcat:调整内存比例

标签 java web-applications tomcat jvm heap-memory

我有一个在具有 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/库开销、永久代空间等)。

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

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

Max memory for 64bit Java :D

关于java - Tomcat:调整内存比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519315/

相关文章:

java - 使用 Java 加载通用二进制文件

iphone - 如何将 iPhone 应用程序变成 Web 应用程序

php - $_SESSION 用于临时变量?

apache - XAMPP tomcat 服务未启动,错误为 "Tomcat Started/Stopped with errors, return code: 1"

eclipse - 如何使用 intelliJ 设置 tomcat?

java - 从程序中的 context.xml 访问资源的属性

java - 如何使用 Java 中的 Spliterator 测试并行处理的性能

java.lang.NoSuchMethodError : No interface method onTransitionToIdle()V 错误

java - GWT 音频录制

javascript - 结合 google.script.run 和 javascript 函数