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

Вид: 67240|Ответ: 2

[Источник] Ошибка JAVA возникла при инициализации ошибки виртуальной машины

[Скопировать ссылку]
Опубликовано 14.08.2017 16:49:22 | | | |
Ошибка возникла при инициализации виртуальной машины
Не удалось зарезервировать достаточно места для кучи объектов 3145728 КБ



Недавно работаю над программой для 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; если оно выполняется нормально, это означает, что заданный размер памяти доступен, иначе будет напечатано сообщение об ошибке.





Проверьте максимальную поддерживаемую память JVM, а затем установите переменные среды на системе

Название переменной: _JAVA_OPTIONS
Стоимость: - Xmx1G






Предыдущий:Используется полноэкранный плагин jQuery «jQuery Fullscreen Plugin»
Следующий:Разница между сертификатами SSL, OV, DV и EV
 Хозяин| Опубликовано 14.08.2017 16:51:30 |
Java версия "1.8.0_144"
Среда выполнения Java(TM) SE (сборка 1.8.0_144-b01)
64-битная серверная виртуальная машина Java HotSpot(TM) (сборка 25.144-b01, смешанный режим)



Java версия "1.8.0_144" 64-битный серверный режим, 80G памяти, без проблем

 Хозяин| Опубликовано 01.09.2020 22:29:04 |
Параметры JVM Опции
https://www.itsvse.com/thread-9369-1-1.html

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

Mail To:help@itsvse.com