У меня есть небольшая программа, которая должна выполнять параллельную банковскую передачу с использованием STM, поэтому я тестирую ее на разных машинах, двухъядерных и одноядерных. В двухъядерных машинах все работает, но в 1-ядерной машине ошибка Java Out of Memory возникает, когда я выполняю 1 миллион параллельных транзакций.Clojure STM Out of Memory
Ошибка заключается в следующем «АВТ-EventQueue-0» java.lang.OutOfMemoryError: Java куча пространство
Также у меня есть версия Java-Синхронизировать ту же программу, которая работает, даже если это происходит медленнее, он может достичь миллиона транзакций.
Что я могу сделать, чтобы приложение Clojure работало в 1-ядерном компьютере? Я боюсь, что сборщик мусора не может обработать так много Refs ... как вы думаете?
Большое спасибо за помощь!
Обновление: Сейчас он работает java -Xmx1000m -jar myprog.jar
и отлично работает!
Я не знал, что можно увеличить размер кучи для JVM, и это была моя проблема. большое спасибо «sw1nn» за большой комментарий;)
Вы пытались увеличить размер кучи для JVM с параметрами -Xmx? Для 32-битного JDK вы ограничены примерно 1500M, но можете пойти гораздо выше с 64-битным. Если вы увеличиваете лимит, а программа терпит неудачу (но позже), у вас, вероятно, будет утечка памяти. Но, возможно, вам нужно немного больше кучи на 1-ядерном компьютере. – sw1nn
О, отлично! Как я могу это сделать, из командной строки? У вас есть связь? Большое спасибо! – nuvio
java -Xmx1500m -cp clojure-1.3.0.jar clojure.main -i myclojure.clj – sw1nn