JVM 内存消耗

Dra*_*mon 9 memory tomcat java

我正在尝试在低内存系统 (150-256Mb) 上运行 tomcat。即使我使用 -Xmx64m(无论如何这应该是默认值)启动 JVM,该进程也会立即占用 200Mb+。

我想知道为什么 JVM 本身需要这么多内存,或者是否有办法调整它?其他 JVM 是否比 sun 低内存消耗更好 - 它们是否与 tomcat 一起使用?

Dav*_*ney 5

除了堆(由-Xms和指定-Xmx)之外,您还需要包括非堆区域。这些包括

  • Perm Gen,最初在 32 位系统上为 64mb,在 64 位系统上为 96mb
  • 代码缓存,在 20 到 40mb 之间,具体取决于 JVM
  • NIO 缓冲区(DirectByteBuffers 的来源),最初为 64mb

还有 JVM 本身的工作空间,将是几十 mb。

在使用服务器类机器时,您还应该了解Sun JVM 的自动调整大小随着时间的推移,服务器类(2Gb 内存,多核)的定义已经遭受了一些贬值,现在大多数机器都能够触发-server优化。我的建议总是指定-Xms-Xmx设置并通过,-server除非你能想到一个很好的理由。