Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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 прави заявка към таблица без празен брой записи
Следващ:Разликата между сървър и клиент на виртуалната машина JVM на Java
 Хазяин| Публикувано в 24.07.2017 г. 10:45:37 ч. |
Наскоро работя по програма за Java. Първоначално винаги съм харесвал управлението на паметта в Java, няма нужда да се притесняваш за разпределяне на паметта, просто разпределяй, събирачът на боклук ще си върне паметта вместо теб. Сега програмата е разработена с голямо количество данни и за бързина ще заредя цялата информация в паметта, което ще гарантира бърз отговор. Все още броя паметта многократно, мисля за собственото си количество данни, което би трябвало да е достатъчно в началото (машината ми има 4G памет, въпреки че Windows разпознава 3.5G, но би трябвало да е наред в сравнение с текущия ми обем данни).

Неочаквано, програмата на първия експеримент продължи няколко часа и се натъкна на изключение за изчерпване на паметта. Гледайки собствените си настройки на виртуалната машина, зададох -Xms512M -Xmx1024M. Без да се замисля, директно го промених на -Xms512M -Xmx2048M, и резултатът беше, че не можах да запазя достатъчно място за object heap. Програмата не може да се изправи. Тогава осъзнах, че все още има ограничение за оригиналната максимална памет. Търсих в интернет и намерих много статии, обсъждащи този въпрос. Накрая намерих най-полезната статия във форума на BEA DEV2DEV

Тук модераторът YuLimin направи теста и стигна до заключението:

Фирмена JVM версия Максимална памет (мега) клиент Максимална памет (мега) сървър

SUN 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 и не може да тества състоянието на сървъра. Оценките са приблизително същите.

SUN 1.6.0 1442 N/a

Изглежда, че е невъзможно да се използва голяма памет в Java. Общата поговорка е, че ако паметта е твърде голяма, времето за събиране на боклука ще бъде дълго. Това също е разбираемо, обикновено се събира, когато паметта не е достатъчна, сканирането на 2G паметта е разбира се много по-бавно от 1G, а има повече обекти памет, оценената връзка се увеличава експоненциално.

По-долу са приложени методите и тестовите записи на YuLimin.

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

Mail To:help@itsvse.com