【问题标题】:Jetty is using too much RSS memory in one of the computers. How to decrease itJetty 在其中一台计算机中使用了过多的 RSS 内存。如何减少它
【发布时间】:2012-08-12 05:35:24
【问题描述】:

我正在使用 maven、jetty、scala、scalate 和 scalate-ssp 运行一个简单的“hello world”网络服务器项目。

使用“mvn jetty:run”运行项目,需要 120Mb 的 RSS 内存(ps -o rss,etime,pid,command)。

但是,在另一台计算机上运行完全相同的项目需要 480Mb 的 RSS 内存。

第一台电脑,mac:uname -a

Darwin mac.local 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr  9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64

第二台电脑,linux:uname -a

Linux linux.local 2.6.32-220.2.1.el6.x86_64 #1 SMP Fri Dec 23 02:21:33 CST 2011 x86_64 x86_64 x86_64 GNU/Linux

什么可以解释这种差异?

我有一个内存有限的环境。如何减少第二台电脑的 RSS 内存?


joakime 的回答更新:

苹果机:

Java HotSpot(TM)
Java version: 1.6.0_33, vendor: Apple Inc.
Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100)

Linux:

OpenJDK
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Apache Maven 3.0.4 (r1232337; 2012-01-17 09:44:56+0100)

Mac 的 Runtime.getRuntime().maxMemory() 为 120Mb,Linux 为 3500Mb。

现在我运行:

export MAVEN_OPTS="-Xmx256m -Xms10m"; mvn jetty:run

有了这个,在 linux Runtime.getRuntime().maxMemory() 现在提供 227Mb(而不是 3500Mb)。

但是,执行“ps -o rss,etime,pid,command”仍然会提供 430Mb 的 RSS 内存。 我需要 RSS 内存小于 250Mb。

如何做到这一点?

【问题讨论】:

  • 我在限制 RSS 内存量的虚拟服务器托管中运行该应用程序。
  • 然后看看它在那个服务器中的样子。它很可能不运行 OS X...

标签: java memory jetty


【解决方案1】:

如果没有更多信息,我推测您有不同的 JVM 实现(1 个 linux,1 个 OSX)并且可能没有指定这些 JVM 的内存上限。

请注意,不同的 JVM 可能会指定不同的内存上限默认值。 即使是相同的 JVM 版本,oracle 也会在不同的操作系统/硬件组合上以不同的方式指定不同的最大内存限制。

之前有一个关于此主题的问题可能会有所帮助:What is the default maximum heap size for Sun's JVM from Java SE 6?

此外,maven 版本在默认情况下使用的插件版本也有所不同,您可能会有完全在 maven + 其插件范围内的差异。

【讨论】:

  • 正确,我使用了两个不同的 JVM。我已经用你的评论更新了问题。
猜你喜欢
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
相关资源
最近更新 更多