Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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, але це має бути нормально порівняно з поточним обсягом даних).

Несподівано програма першого експерименту тривала кілька годин і зіткнулася з винятком Out of Memory. Дивлячись на власні налаштування віртуальної машини, я встановив -XMS512M -Xmx1024M. Не замислюючись, я одразу змінив його на -Xms512M -Xmx2048M, і в результаті я не зміг зарезервувати достатньо місця для купи об'єктів. Програма не може піднятися. Тільки тоді я зрозумів, що існує обмеження для початкової максимальної пам'яті. Я шукав в Інтернеті і знайшов багато статей, що обговорюють цю проблему. Нарешті, я знайшов найкориснішу статтю на 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