3

我有一个小程序应该使用 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”的精彩评论;)

4

1 回答 1

2

您还可以将 jvm-opts 添加到您的 leiningen project.clj 中,如下所示:

:jvm-opts ["-Xmx1500m"]

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

于 2013-03-13T00:27:07.433 回答