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 параллельно.