Memory Clojure STM内存不足

Memory Clojure STM内存不足,memory,clojure,heap,multicore,stm,Memory,Clojure,Heap,Multicore,Stm,我有一个小程序,应该使用STM执行并行银行转账,所以我正在不同的机器上测试它,2核和1核。在双核机器中,一切正常,但在单核机器中,当我执行100万个并行事务时,会抛出Java内存不足错误 错误为以下“AWT-EventQueue-0”java.lang.OutOfMemoryError:java堆空间 我还有一个Java同步版本的同一个程序,它可以工作,即使速度较慢,也可以达到一百万个事务 如何使Clojure应用程序在单核机器中工作?恐怕垃圾收集器处理不了这么多裁判……你觉得呢 非常感谢你的帮

我有一个小程序,应该使用STM执行并行银行转账,所以我正在不同的机器上测试它,2核和1核。在双核机器中,一切正常,但在单核机器中,当我执行100万个并行事务时,会抛出Java内存不足错误

错误为以下“AWT-EventQueue-0”java.lang.OutOfMemoryError:java堆空间

我还有一个Java同步版本的同一个程序,它可以工作,即使速度较慢,也可以达到一百万个事务

如何使Clojure应用程序在单核机器中工作?恐怕垃圾收集器处理不了这么多裁判……你觉得呢

非常感谢你的帮助

更新: 它现在可以工作了,我做了
java-Xmx1000m-jarmyprog.jar
并且工作得很好

我不知道增加JVM的堆大小是可能的,这正是我的问题。
非常感谢“sw1nn”的精彩评论;)

您还可以向leiningen project.clj添加jvm选项,如下所示:

:jvm-opts ["-Xmx1500m"]

要在leiningen中运行程序时指定它(如测试)

您是否尝试过使用-Xmx选项增加JVM的堆大小?对于32位JDK,限制在1500M左右,但使用64位JDK时可以更高。如果您增加了限制,程序失败(但稍后会失败),则可能存在内存泄漏。但是你可能只需要在单核机器上多加一点堆。哦,太好了!我如何从命令行真正做到这一点?你有任何联系吗?谢谢!java-Xmx1500m-cp clojure-1.3.0.jar clojure.main-i myclojure.cljAmazing!它现在可以工作了,我做了java-Xmx1000m-jarmyprog.jar,工作得非常完美!非常感谢。另外,你可以把它写下来作为答案。。。