大規模な実験の一環として、クラスターでNetLogo (Java シミュレーション フレームワーク) シミュレーションを実行しようとしています。(比較的) 単純なシミュレーションに大量のメモリが必要と思われることに驚きました。クラスターでは、「-Xmx2500M」未満のヒープサイズに対して「java.lang.OutOfMemoryError: Java heap space」例外がスローされます。1 回の実行には 5 時間かかります。両方の Mac (iMac と MacBook Pro) で同じ実験を実行しましたが、1 時間もかからずに実行され、「-Xmx1024」でエラーは発生しませんでした。クラスタ ジョブには「-XX:MaxPermSize=250M」が必要ですが、私の Mac ではデフォルトを超える増加は必要ありません。すべてのケースでまったく同じ jar を使用して、同じコード、同じ入力を実行しました。
いずれの場合も 64 ビット JVM が使用されます (私の知る限り、これらはかなり似ています)。
<on the cluster>
$ java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
<on my macs>
$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04-415-10M3646)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01-415, mixed mode)
そして、私はすべての場合にクライアント JVM を実行しています (最初はクラスターでサーバーを使用していましたが、クライアントに切り替えても違いはありませんでした)。Java 7 を使用してクラスターで実行しようとしましたが、同じ巨大なメモリと実行時間の問題があります。
私は完全に当惑しています。私が話した誰もこれを説明できません。誰かが前にこれに出くわしたことがありますか? どんな助けでも大歓迎です!