Извлечение памяти: пространство кучи Java, но при просмотре пространства кучи он максимально использует 50 МБ - PullRequest
1 голос
/ 09 марта 2010

Я использую ASANT для запуска XML-файла, который указывает на файл NARS.jar. (у меня нет файла проекта NARS.jar)

Я получаю "java.lang.OutOfMemoryError: пространство кучи Java.

Я использовал VisualVM для просмотра кучи во время работы NARS.jar, и он говорит, что он максимально использует 50 МБ пространства кучи.

Я установил начальный и максимальный размер пространства кучи равным 512 МБ.

Кто-нибудь имеет представление о том, что может быть не так?

Я получил 1 ГБ физической памяти и создал файл подкачки объемом 5 ГБ (для целей тестирования).

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 28 августа 2010

Ваше приложение может пытаться выделить память, превышающую ваш предел в 512 м, поэтому вы видите ошибку вне памяти, даже если используется только 50 м. Чтобы проверить это, я бы установил:

-Xms512m -Xmx1024m

И посмотри, что получится. Я также попробовал бы меньший тестовый файл, скажем, 1g. Продолжайте уменьшать размер файла, пока не перестанете видеть ошибку. Если вам это удастся, то проблема в том, что то, что вы пытаетесь сделать, и то, как вы пытаетесь это сделать, занимает слишком много памяти. Время искать альтернативный подход.

0 голосов
/ 30 марта 2010

XML-файлы являются печально известными проблемами с памятью, поскольку представление DOM часто может в десять раз превышать их размер на диске.

Я предполагаю, что именно здесь вы достигнете предела. Есть ли трассировка стека с исключением из-за нехватки памяти?

0 голосов
/ 09 марта 2010

Вы разветвляете процесс при запуске файла NARS.jar? Установка ANT_OPTS влияет только на виртуальную машину, на которой работает система ant. Если вы используете задачу Java для запуска / развёртывания дополнительного процесса виртуальной машины, настройки ANT_OPTS не будут унаследованы.

Если это так, задайте либо fork = "false" в задаче java (если вы не используете никаких других опций, требующих включения fork), либо установите maxmemory = "512m".

...