我正在使用 maven、jetty、scala、scalate 和 scalate-ssp 运行一个简单的“hello world”Web 服务器项目。
使用“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。
如何做到这一点?