1

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

2 番目のコンピューター、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

この違いを説明できるものは何ですか?

メモリが制限された環境があります。2 台目のコンピュータの 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() が (3500Mb ではなく) 227Mb になります。

ただし、「ps -o rss,etime,pid,command」を実行すると、それでも 430Mb の RSS メモリが得られます。RSS メモリを 250Mb 未満にする必要があります。

これを達成する方法は?

4

1 に答える 1

2

詳細な情報がなければ、異なる JVM 実装 (1 つの Linux、1 つの OSX) があり、それらの JVM のメモリの上限を指定していない可能性が高いと推測します。

JVM が異なれば、異なる上限メモリ制限のデフォルトが指定される可能性が高いことに注意してください。オラクルによる同じ JVM バージョンでも、OS/ハードウェアの組み合わせごとに異なる最大メモリ制限を指定します。

このトピックに関する以前の質問が役立つかもしれません: Java SE 6 からの Sun の JVM のデフォルトの最大ヒープ サイズは?

また、maven のバージョンは、デフォルトで使用するプラグインのバージョンも異なります。完全に maven + そのプラグインの範囲内で違いが生じる可能性があります。

于 2012-08-15T22:00:51.227 に答える