![Ubuntu 14 JVM — Не удалось зарезервировать достаточно места для массива маркировки карт](https://rvso.com/image/1083717/Ubuntu%2014%20JVM%20%E2%80%94%20%D0%9D%D0%B5%20%D1%83%D0%B4%D0%B0%D0%BB%D0%BE%D1%81%D1%8C%20%D0%B7%D0%B0%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D0%BE%20%D0%BC%D0%B5%D1%81%D1%82%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B0%20%D0%BC%D0%B0%D1%80%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8%20%D0%BA%D0%B0%D1%80%D1%82.png)
После обновления до Ubuntu 14 у меня возникла проблема со сбоями всех JVM.
Я переустанавливаю Java (версии Oracle и OpenJDK). Я трачу время на настройку параметров кучи JVM, и теперь, наконец, я могу запускать приложения Java.
Теперь проблема в том, что каждый раз, когда я запускаю SQLDeveloper, моя Eclipse JVM выдает мне сообщение: «Не удалось зарезервировать достаточно места для массива маркировки карт».
Если я правильно понимаю, это как-то связано с распределением участков памяти JVM.
Есть ли правило, которому я должен следовать, чтобы этого не произошло?
Информация о машине:
Ubuntu 14.04 LTS; 64-бит; ЦП Intel Core2 Duo; 8 ГБ памяти
Eclipse: java-7-oracle; -d64; -XX:MaxPermSize=256M; -Xms512m -Xmx512m;
Запуск/отладка Eclipse: 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.