Eclipse не запускается в Windows, если для параметра -Xmx указано более высокое значение

#eclipse #startup

#eclipse #запуск

Вопрос:

Я работаю внутри виртуальной машины. В настройках VMware я вижу, что выделенная оперативная память составляет 6016 МБ, что равно 6 ГБ. Как рекомендовано в нашей компании, я использовал -Xmx1024m (по умолчанию было 512), но eclipse не запускается, указывая код выхода jvm -1. Максимальное значение для Xmx, которое работает, равно 660m. Почему это происходит? Пожалуйста, помогите, прежде чем я застрелюсь.

Редактировать: я могу запустить Java-программу Helloworld, указав параметр -Xmx1024m. При запуске используются только шпаргалки eclipse.

Комментарии:

1. Если вы работаете в Linux, что free -m отображается в командной строке?

2. Нет, я работаю на виртуальной машине Windows 2003.

3. Вы в конечном итоге нашли ответ? Я видел это в другом месте с другим приложением Java. Много оперативной памяти, но не удалось установить -Xmx1024 там, где работал -Xmx800m. Для меня это не имеет смысла…

Ответ №1:

Вам нужно убедиться, что ваша ОС и JVM являются 64-разрядными. В 32-разрядной среде фрагментация адресного пространства виртуальной памяти может привести к тому, что будут доступны относительно небольшие смежные блоки памяти.

Если вам необходимо использовать 32-разрядную ОС, попробуйте добавить следующее в начало вашего файла eclipse.ini:

 -vm
[some.path]/javaw.exe
  

Вы также можете попробовать отключить любые устройства, которые не являются строго обязательными, поскольку это загрузит меньше драйверов в адресное пространство и приведет к меньшей фрагментации.

Комментарии:

1. Это 32-разрядная виртуальная машина, созданная на 64-разрядной машине. В виртуальной машине у меня, конечно, 32-разрядная JVM. Таким образом, проблемы, о которой вы говорите, не должно быть.

2. Если ваша виртуальная машина 32-разрядная, то назначать ей 6 ГБ бесполезно. 32-разрядная ОС может видеть только 4 ГБ. В 32-разрядном адресном пространстве Java имеет хорошо документированные проблемы с выделением больших смежных блоков памяти, с которыми вы столкнулись. Даже если ваше адресное пространство составляет 4 ГБ, драйверы и другие библиотеки DLL закрепляются в памяти в различных фиксированных местах, фрагментируя адресное пространство. Разные системы будут иметь разный максимальный непрерывный блок. Лучшее решение — установить 64-разрядную виртуальную машину и т.д.

3. Я вижу. Но мы разрабатываем только на 32-разрядной системе. Известно ли вам о каком-либо решении проблемы фрагментации адресов в 32-разрядной виртуальной машине? Любые инструменты и т.д.

4. Существуют некоторые методы взлома для переустановки драйверов и библиотек DLL. Я не знаю подробностей. Это не то, что следует предпринимать тем, кто еще не знаком с распределением памяти ОС низкого уровня. Вы можете попробовать запустить eclipse с javaw.exe вместо значения по умолчанию jvm.dll. Это устраняет одну DLL, что может немного помочь. Я обновлю ответ.

5. Также у меня есть несколько сомнений. Зачем нужна фрагментация, если не запущено множество других программ, которых у меня нет. Также я могу запустить простую Java-программу с параметром -Xmx1024m. Только шпаргалки Eclipse, если я укажу это значение.

Ответ №2:

Попробуйте запустить с параметрами -Xms1024M -Xmx6016M

Здесь Xms — начальная память кучи при запуске, а xmx — общая память кучи, которая может быть выделена. Вы можете увеличить или уменьшить объем памяти кучи в зависимости от вашего проекта и размера объектов.

Ответ №3:

Не могли бы вы, пожалуйста, попробовать с -Xmx1024m и -Xms512m. Иногда, если разница между максимальным и минимальным размером пространства кучи слишком велика, это влияет на запуск eclipse.

Хорошо, теперь удалите все файлы Windows java из каталога System32 и установите последнюю версию jdk от sun. Затем запустите Eclipse, я надеюсь, он запустится.

После удаления он может запросить последнюю версию jdk / jre. Поэтому задайте путь для включения jre в JDK. И запустите его.

Комментарии:

1. попробуйте измененный ответ и дайте мне знать

2. Перед установкой Eclipse я загрузил последнюю версию jdk, и во время этой установки в каталог system32 были скопированы только файлы java, что я могу подтвердить по временной метке файлов.

Ответ №4:

При использовании версии Android bundle - adt-bundle-windows-x86-20130219 у меня была такая же проблема с невозможностью запуска виртуальной машины. Я уменьшил максимальный объем памяти (работает также на виртуальной машине xp x86). Я нашел этот поток и изменил конфигурацию, и у меня это сработало. Объем оперативной памяти виртуальной машины составил 1,7 ГБ, увеличен до 2,1 без изменений.

Я изменил настройку eclipse.ini с -Xmx768m на -Xmx512m , и она сразу же запустилась. Я оставил минимальное значение на уровне 40m, а остальные настройки остались неизменными.

Вот полная конфигурация:

 -startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-product
com.android.ide.eclipse.adt.package.product
--launcher.XXMaxPermSize
256M
-showsplash
com.android.ide.eclipse.adt.package.product
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m
-Declipse.buildId=v21.1.0-569685