У меня есть небольшая программа, которая должна выполнять параллельный банковский перевод с использованием STM, поэтому я тестирую ее на разных машинах, двухъядерных и одноядерных. На 2-ядерных машинах все работает, но на 1-ядерной машине выдается ошибка Java Out of Memory, когда я выполняю 1 миллион параллельных транзакций.
Ошибка следующая: «AWT-EventQueue-0» java.lang.OutOfMemoryError: пространство кучи Java
Также у меня есть версия той же программы с синхронизацией Java, которая работает, хотя и медленнее, но может достигать миллиона транзакций.
Что я могу сделать, чтобы приложение Clojure работало на одноядерном компьютере? Боюсь, сборщик мусора не справится с таким количеством ссылок... что вы думаете?
Спасибо большое за вашу помощь!
Обновление: теперь все работает, я сделал java -Xmx1000m -jar myprog.jar
и все заработало отлично!
Я не знал, что можно увеличить размер кучи для JVM, и это была именно моя проблема. Большое спасибо "sw1nn" за отличный комментарий ;)