приложение заканчивается на размер кучи - PullRequest
0 голосов
/ 24 октября 2010

Я определил -Xmsx 1,3 ГБ в параметрах виртуальной машины Java, и мой Eclipse не допускает больше этого, при запуске приложения я получил следующее исключение:

Исключение в потоке "Thread-3" Java.lang.OutOfMemoryError: Пространство кучи Java

Что я могу сделать?

Ответы [ 3 ]

1 голос
/ 24 октября 2010

Ваш вопрос очень неясен:

  • Запускаете ли вы приложение в новой JVM?
  • Заданы ли параметры -Xmx / -Xms в программе запуска для ребенкаJVM?

Если на любой из этих вопросов вы ответили «нет», попробуйте сделать… оба.(В частности, если вы не установите по крайней мере -Xmx для дочерней JVM, вы получите размер кучи по умолчанию, который является относительно небольшим.)

Если ответ на оба эти вопроса будет «да»", тогда проблема в том, что вы работаете в пределах ограничений конфигурации вашего оборудования и / или операционной системы:

  • В типичной 32-битной Windows пользовательский процесс может адресовать только 2** 31 байт виртуальной памяти, и некоторые из них будут использоваться двоичными файлами JVM, собственными библиотеками и различными выделениями памяти без кучи.(Я полагаю, что в 32-битном Linux вы можете иметь до 2**31 + 2**30).«Исправление» для этого заключается в использовании 64-битной ОС и 64-битной JVM.

  • Кроме того, JVM ограничена объемом памяти, который может запрашивать ресурсыПодсистема виртуальной памяти ОС.Обычно это ограничено суммой доступной оперативной памяти и размером файлов / разделов диска, используемых для подкачки.«Исправление» для этого заключается в увеличении размера файла / раздела подкачки.Добавление большего объема оперативной памяти, вероятно, также будет хорошей идеей.

1 голос
/ 24 октября 2010

Вы можете установить максимальное использование памяти для затмения с помощью -mx1300m или подобного. Это ограничение будет связано с тем, что вы используете 32-разрядную версию Java в Windows. В 64-битной ОС такой проблемы не будет.

Однако имеет значение максимальный объем памяти, который вы устанавливаете для каждого приложения в затмении. Что вы установили в параметрах запуска в Eclipse?

0 голосов
/ 24 октября 2010

Возможно, вы захотите взглянуть на агрессивный вариант кучи http://java.sun.com/docs/hotspot/gc1.4.2/#4.2.2.%20AggressiveHeap|outline Это решило для меня похожую проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...