Не удалось зарезервировать достаточно места для кучи объектов - PullRequest
0 голосов
/ 05 апреля 2011

Я пишу обертку для Lucene.При частом поисковом запросе может быть выброшено «Не удалось зарезервировать достаточно места для кучи объектов»Как я могу получить размер кучи объекта?И как я могу решить это?

1 Ответ

2 голосов
/ 05 апреля 2011

Я считаю, что основная проблема та же, что описана в хороших ответах на вопрос SO Не удалось зарезервировать достаточно места для кучи объектов .

То есть JVMпытается запросить у ОС память для кучи, а ОС отказывается, потому что она уже выделила всю виртуальную память другим процессам.

Я ожидаю, что это происходит при запуске индексаторачасто потому что:

  • увеличивает среднюю загрузку системы (количество процессов, работающих / ожидающих запуска), и, следовательно,
  • увеличивает среднюю системувыделенные ресурсы виртуальной памяти и, следовательно,
  • повышает вероятность того, что ОС скажет «Нет», когда новая JVM начнет запускать индексатор.

Конечно, это в основном гипотеза ...


Что вы можете с этим поделать?

  1. Увеличить размер файла диска или раздела, используемого для подкачки страниц.
  2. Добавление дополнительной физической памяти к машине.
  3. Запускайте индексатор реже и / или когда система не занята.
  4. Обрезает размер кучи индексатора.
  5. Переместите часть другой нагрузки на другую машину.

Некоторые из них необходимо выполнять с осторожностью, поскольку они могут по-разному влиять на общую производительность системы.

(Между прочим, я не думаю, что переход на 64-битную ОС обязательно поможет, а запуск 64-битной JVM определенно не поможет ...)

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