我有一个小程序应该使用 STM 执行并行银行转账,所以我在不同的机器上测试它,2 核和 1 核。在 2 核机器上一切正常,但在 1 核机器上,当我执行 100 万个并行事务时,会抛出 Java Out of Memory 错误。
错误是以下“AWT-EventQueue-0” java.lang.OutOfMemoryError: Java heap space
此外,我有一个相同程序的 Java 同步版本,它可以工作,即使速度较慢,它也可以达到一百万笔交易。
我可以做些什么来让我的 Clojure 应用程序在 1 核机器上工作?恐怕垃圾收集器无法处理这么多 Refs ......你怎么看?
非常感谢你的帮助!
更新:
它现在可以工作了,我做到了java -Xmx1000m -jar myprog.jar
并且工作得很好!
我不知道可以增加 JVM 的堆大小,而这正是我的问题。非常感谢“sw1nn”的精彩评论;)