Ubuntu 14 JVM - Не удалось зарезервировать достаточно места для массива маркировки карт

После обновления до Ubuntu 14 у меня проблема со всеми сбоями JVM.

Я переустанавливаю Java (версии oracle и openjdk). Я трачу некоторое время на настройку параметров кучи JVM, и теперь, наконец, я могу запускать приложения Java.

Теперь проблема в том, что каждый раз, когда я запускаю SQLDeveloper, моя Eclipse JVM выдает мне: "Не удалось зарезервировать достаточно места для массива маркировки карт".

Если я правильно понимаю, это как-то связано с выделением фрагментов памяти JVM.

Есть ли какое-то правило, которому я должен следовать, чтобы этого не случилось?

Информация о машине:

Ubuntu 14.04 LTS; 64-битный; Процессор Intel Core2 Duo; 8 ГБ памяти

Затмение: Ява-7-оракул; -d64; -XX: MaxPermSize = 256M; -Xms512m -Xmx512m;

Eclipse Run / Debug: java-6-openjdk-amd64; -Xms1024m; -Xmx1024m; -XX: + UseSerialGC;

SQLDeveloper: java-7-oracle; -XX: MaxPermSize = 256M;

1 ответ

Решение

JVM пытается выделить непрерывный блок памяти. Поскольку у меня достаточно памяти в системе, она должна быть фрагментирована.

Чтобы решить эту проблему, я установил начальный размер кучи очень низким (по умолчанию 128 не работал) и позволил JVM справиться с этим.

Я изменил параметры выполнения JVM из:

java-6-openjdk-amd64; -Xms1024m; -Xmx1024m; 

Для того, чтобы:

java-6-openjdk-amd64; -Xms64m; -Xmx1024m; 

Обновить:

Я также снизил значение overcommit_ratio со 100 (по умолчанию) до 50.

$ cat /proc/sys/vm/overcommit_ratio

Я знаю, что рекомендуется оставить его равным 100, но, поскольку я внес изменение, я не получаю ошибки jvm, когда запускаю Chromium/Eclipse/SQLDeveloper параллельно.

Другие вопросы по тегам