STM을 사용하여 병렬 뱅킹 전송을 수행해야하는 작은 프로그램이 있으므로 다른 시스템 인 2 코어 및 1 코어에서 테스트 할 예정입니다. 2 코어 머신에서는 모든 것이 작동하지만 1 코어 머신에서는 1 백만 병렬 트랜잭션을 수행 할 때 Java Out of Memory 오류가 발생합니다. 자바 힙 공간 또한Clojure STM 메모리 부족
나는 그것이 느린 경우에도 작동 같은 프로그램의 자바 동기화 버전 :
오류는 다음과 같은 "AWT-EventQueue의-0"java.lang.OutOfMemoryError와이다 그것은 백만 건의 거래에 도달 할 수 있습니다.
Clojure 응용 프로그램을 1 코어 시스템에서 작동 시키려면 어떻게해야합니까? 가비지 컬렉터가 너무 많은 Refs를 처리 할 수 없다는 것이 두렵다 ... 어떻게 생각하니?
도움을 주셔서 감사합니다.
업데이트 : 지금 작동합니다. 저는 java -Xmx1000m -jar myprog.jar
을 완성했으며 완벽하게 작동했습니다.
JVM의 힙 크기를 늘릴 수 있다는 것을 몰랐습니다. 이것이 바로 제 문제였습니다. 덕분에 많은 위대한 코멘트 "sw1nn"에)
-Xmx 옵션을 사용하여 JVM의 힙 크기를 늘려 보았습니까? 32 비트 JDK의 경우 약 1,500 만 개로 제한되지만 64 비트를 사용하면 훨씬 높아질 수 있습니다. 제한을 늘리고 프로그램이 실패하면 (나중에는) 메모리 누수가 발생할 가능성이 높습니다. 그러나 1 코어 머신에서 좀 더 많은 힙이 필요할 수도 있습니다. – sw1nn
대단해! 커맨드 라인에서 실제로 어떻게 할 수 있습니까? 링크가 있습니까? 고마워요! – nuvio
java -Xmx1500m -cp clojure-1.3.0.jar clojure.main -i myclojure.clj – sw1nn