【问题标题】:Tomcat: adjust memory proportionsTomcat:调整内存比例
【发布时间】:2012-03-20 03:08:34
【问题描述】:

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

-Xms256m

-Xmx1600m

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你的回答不正确,32 位 JVM 不限于 1.5 GiB 的堆空间。限制是操作系统的进程大小。
    • @Mikaveli:你能提供证据或引用吗? Rik 提供了似乎支持他的结论的实验证据。我想知道他是对还是错。
    • @Mikaveli:谢谢。它没有明确说明 64 位 Windows 上的 32 位 JVM,但它确实说“在运行 32 位 VM 的 64 位操作系统上,最大堆大小可能高于 [我猜 1.6GB] "以及您提到的有关 Solaris 的一些信息。
    • @LarsH 他的回答是“32 位 Java 只能寻址 1.5 GB”——我已经证明这种说法是不正确的。一个 32 位的 JVM 可以处理近 4 GiB。此外,如果您阅读了我的回答,您会发现 Windows 是限制因素 - 其中 32 位进程被限制为 2 GiB,即使在其 64 位操作系统上也是如此(默认情况下)。
    【解决方案2】:

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

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

    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

    【讨论】:

      猜你喜欢
      • 2013-11-03
      • 2010-11-05
      • 2014-09-19
      • 2023-03-25
      • 1970-01-01
      • 2011-04-16
      • 2011-12-14
      • 2015-08-04
      • 2011-09-20
      相关资源
      最近更新 更多