私は、STMを使用して並列バンキング転送を実行する小さなプログラムを持っているので、別のマシン、2コアと1コアでテストしています。 2コアマシンではすべて動作しますが、1コアマシンでは、100万並列トランザクションを実行するとJava Out of Memoryエラーがスローされます。Clojure STMメモリ不足
エラーは、以下の「AWT-EventQueueの-0」java.lang.OutOfMemoryErrorをです:Javaヒープスペース
また、私は、それが遅い場合でも、働く同じプログラムのJavaを同期バージョンを持っていますそれは百万回の取引に達することができます。
Clojureアプリケーションを1コアマシンで動作させるにはどうすればよいですか?私はガベージコレクターが非常に多くのRefsを扱うことができないのではないかと思います...あなたはどう思いますか?
ありがとうございました!
更新: それが機能するようになりました、私はjava -Xmx1000m -jar myprog.jar
を行なったし、完全に働きました!
JVMのヒープサイズを増やすことができないことがわかりましたが、それはまさに私の問題でした。偉大なコメントのためにたくさんの「sw1nn」 おかげで、あなたはまた、以下のようなあなたのLeiningenをするproject.cljにJVMが-付き合え追加することができます)
-Xmxオプションを使ってJVMのヒープサイズを増やしてみましたか? 32ビットJDKでは、約1500Mに制限されていますが、64ビットではるかに高い可能性があります。制限を大きくしてプログラムが失敗すると(後で)、メモリリークが発生する可能性があります。しかし、1コアマシンでもっと多くのヒープを必要とする可能性があります。 – sw1nn
すごい!コマンドラインから実際にどうすればいいですか?リンクはありますか?どうもありがとう! – nuvio
java -Xmx1500m -cp clojure-1.3.0.jar clojure.main -i myclojure.clj – sw1nn