Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 24728|Ответ: 1

[Источник] Не удалось зарезервировать достаточно места для кучи объектов 2097152KB

[Скопировать ссылку]
Опубликовано 24.07.2017 10:43:36 | | | |
Ошибка: Не удалось зарезервировать достаточно места для кучи объектов 2097152KB

Я запустил activemq и сообщил об ошибке, вызванной слишком большим выделением, поэтому при выделении памяти MQTT её нужно определить, объединяя размер памяти сервера (используйте free -g) и поддерживает ли JDK размер памяти.

Настройки параметров JVM

Основные параметры:
-Xms: Начальный размер памяти
-Xmx: Максимальный размер памяти
-XMN: размер молодого поколения

Используйте команду Java -Xmx2047M -version, чтобы проверить, соответствует ли она:


Решение:

Старт - > Панель управления - > Система - > Расширенные настройки - > Переменные среды - > Системные переменные

Новая переменная:
Название переменной: _JAVA_OPTIONS   
Переменное значение: -Xmx1G






Предыдущий:MySQL запрашивает таблицу без пустого количества записей
Следующий:Разница между сервером и клиентом виртуальной машины Java JVM
 Хозяин| Опубликовано 24.07.2017 10:45:37 |
Недавно работаю над программой для Java. Изначально мне всегда нравилось управление памятью в Java, не нужно беспокоиться о выделении памяти, просто выделяйте — мусорщик вернёт память за вас. Сейчас программа разрабатывается с большим объёмом данных, и ради ускорения я собираюсь загрузить всю информацию в память, что обеспечит быструю реакцию. Я всё ещё постоянно считаю память, думаю о своём собственном объёме данных, которого должно хватить в начале (у моего компьютера 4G памяти, хотя Windows распознаёт 3.5G, но по сравнению с текущим объёмом данных это должно быть нормально).

Неожиданно программа первого эксперимента длилась несколько часов и столкнулась с исключением «Потеря памяти». Смотря свои собственные настройки виртуальной машины, я установил -XMS512M -Xmx1024M. Не задумываясь, я сразу изменил его на -Xms512M -Xmx2048M, и в итоге я не смог зарезервировать достаточно места для object heap. Программа не может подняться. Только тогда я понял, что всё ещё существует предел исходной максимальной памяти. Я искал в интернете и нашёл множество статей, посвящённых этой проблеме. Наконец, я нашёл самую полезную статью на DEV2DEV форуме BEA

Здесь модератор YuLimin провёл тест и пришёл к выводу:

Компания JVM версия Максимальная память (мега) клиент Максимальная память (мега) сервер

ВС 1.5.x 1492 1520

SUN 1.5.5 (Linux) 2634 2660

ВС 1.4.2 1564 1564

SUN 1.4.2 (Linux) 1900 1260

IBM 1.4.2 (Linux) 2047 N/A

BEA JRockit 1.5 (U3) 1909 1902

Сейчас использую JDK1.6.0_05, протестировал. Самое главное в состоянии клиента — мой JDK не распознаёт параметр -Server и не может проверить состояние сервера. Оценки примерно такие же.

ВС 1.6.0 1442 N/a

Похоже, что использовать большую память в Java невозможно. Общее выражение такое: если память слишком большая, время сбора мусора будет долгим. Это также понятно: обычно собирается, когда памяти недостаточно, сканирование 2G-памяти, конечно, гораздо медленнее, чем 1G, и объектов памяти больше, оценённая зависимость растёт экспоненциально.

Ниже прилагаются методы тестирования и результаты тестов YuLimin.

Метод тестирования: используйте команду java -XmxXXXXM -version для тестирования в командной строке, а затем постепенно увеличивайте значение XXXX; если всё работает нормально, это означает, что заданный размер памяти доступен, в противном случае будет напечатано сообщение об ошибке.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com