2013-02-14 2 views
1

У меня есть приложение rails 3 с помощью jruby 1.7, и я пытаюсь использовать консоль rails в своей локальной среде dev (OS X 10.8 с jdk 7) в ситуации, которая потребует большой памяти. Я бегу консоли рельсы следующим образом:OutOfMemoryError: Java heap space при запуске jruby на консоли rails, но не используя всю память, определенную -J-Xmx

jruby -J-Xms1024m -J-Xmx4096m -J-XX:+UseConcMarkSweepGC -J-XX:+CMSIncrementalMode -S rails c samuel_hml

Затем я начинаю длинный запущенного процесса с помощью консоли рельсы/

Процесс Java JRuby всегда терпит неудачу после того, как приподняв «OutOfMemoryError: Java кучу пространства» ошибка. Но когда я запускаю консоль и проверяю Монитор активности, он никогда не использует более 700 мб.

+0

ли Вы, попытался создать свалку с помощью инструмента sth. например [visualvm] (http://visualvm.java.net/heapdump.html) –

ответ

3

Я нашел решение:

RAILS_ENV=samuel_hml jruby -J-Xms1024m -J-Xmx4096m -J-XX:+UseConcMarkSweepGC -J-XX:+CMSIncrementalMode -S rails c 

JRuby игнорировал мой "-J-Xms1024m -J-Xmx4096m -J-XX: + UseConcMarkSweepGC -J-XX: + CMSIncrementalMode" параметров

0

У вас есть какая-то обертка вокруг вашей java? Обычно это -Xmx

jruby -Xms1024m -Xmx4096m -XX:+UseConcMarkSweepGC -J-XX:+CMSIncrementalMode -S rails c samuel_hml 
0

Это только предположение, но у меня были подобные проблемы, когда я работал с Java Native буферов. Я установил 2048 МБ максимального размера кучи и получил OutOfMemoryError, хотя монитор показал мне, что не вся память была использована. Реальная проблема была не в java-памяти, а в собственной памяти, которая на самом деле закончилась. Я проверил его с помощью системного монитора.

Проблема была решена, когда я уменьшил объем памяти для java, предоставляя больше свободного места для собственных буферов.

Так что, может быть, у вас что-то похожее?