Почему происходит сбой Eclipse с Xmx, XX: MaxPermSize выше определенных значений?
Вопрос
Запускаю Eclipse 3.5.1, JDK 1.6.0_17 на 32-битном WinXP SP3 с 3,5 гигабайтами оперативной памяти.
Я осведомлен об известном Лучшие практики Eclipse, все еще пытаюсь разобраться с eclipse.ini.
Это приведет к запуску: -Xmx588m
и этого не будет: -Xmx589m
.
То же самое с -XX:MaxPermSize
.Все, что выше -XX:MaxPermSize=140m
не запускается.
Экран смерти подобен тому, что это (взято из здесь).
Есть какие-нибудь идеи о том, почему это может происходить?
Решение
См. эту ошибку затмения .
Общая проблема заключается в том, что для этого jvm требуется непрерывный блок памяти. На окнах процесс получит 2 гигабайта, другие загружаемые библиотеки размещаются в разных областях памяти. Если библиотека оказывается посередине, она в два раза меньше используемого вами размера.
Средство запуска Eclipse будет загружать некоторые системные библиотеки DLL для работы с графикой, и, в частности, user32.dll может привести к загрузке сторонних библиотек в зависимости от того, что установлено на вашем компьютере (видно здесь ).
Для достижения более высоких пределов памяти вы можете принудительно разветвлять jvm в отдельный процесс от средства запуска eclipse. Процесс jvm не будет загружать эти дополнительные библиотеки до тех пор, пока vm не инициализирует свою память. Сделайте это с помощью аргумента -vm, указывающего на javaw.exe:
eclipse -vm C:\jdk\jre\bin\javaw.exe
Другие советы
Смотрите также эта ошибка 203325 для получения рекомендаций о том, как отслеживать использование вашей памяти с помощью таких инструментов, как:
- JConsole
- Инструмент мониторинга памяти (eclipse tool)
Примечание:как прокомментировал здесь:
Если Вы не укажете максимальный лимит памяти, то это остается на усмотрение диспетчера памяти операционной системы.
Тот Самый
-Xmx <size>
полезен для программирования небольших устройств, таких как J2ME.
Если вы программируете для небольшого устройства с ограниченным объемом памяти, вы можете использовать-Xmx
Свойство JVM для эмуляции небольшого устройства, даже если вы используете ПК.