OutOfMemoryError: пространство кучи Java при запуске jruby на консоли rails, но не при использовании всей памяти, определенной -J-Xmx

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

jruby -J-Xms1024m -J-Xmx4096m -J-XX: + UseConcMarkSweepGC -J-XX: + CMSIncrementalMode -S направляющие c samuel_hml

Затем я запускаю длительный процесс, используя консоль rails

Процесс jruby java всегда завершается ошибкой после появления ошибки "OutOfMemoryError: Java heap space". Но когда я запускаю консоль и проверяю монитор активности, он никогда не использует более 700 МБ.

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"

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

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

Так может здесь у вас есть что-то похожее?

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

jruby -Xms1024m -Xmx4096m -XX:+UseConcMarkSweepGC -J-XX:+CMSIncrementalMode -S rails c samuel_hml
Другие вопросы по тегам