STS / Eclipse JVM максимальная куча меньше, чем свободная память на компьютере

#eclipse #jvm

#eclipse #jvm

Вопрос:

Я пытаюсь увеличить свою максимальную кучу в eclipse / STS. Я обнаружил, что потолок кажется намного ниже, чем моя свободная память. Windows сообщает о 2 ГБ доступной памяти в диспетчере задач. Похоже, что JVM в Eclipse способна выделить только около 1,2 Гб из этого объема. В приведенной ниже конфигурации, найденной в eclipse.ini, если я изменяю -Xmx на значение выше 1200 м, я получаю сообщение об ошибке, что JVM не удалось запустить. Почему это не позволяет мне выделять больше?

 -startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-product
com.springsource.sts.ide
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-vm
C:/bea/jdk160_05/bin/javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dsun.lang.ClassLoader.allowArraySyntax=true
-Xms1200m
-Xmx1200m
  

Ответ №1:

Обычно это ограничение процесса Windows 2Gb / DLL для 32-разрядных систем. Java обычно (и, следовательно, Eclipse) выделяет непрерывный блок памяти для своей кучи. Windows разрешает только максимум (обычно) 2 ГБ для процесса в 32-разрядной системе. (Есть несколько приемов, чтобы увеличить это до 3 ГБ.) Досадная проблема заключается в том, что библиотеки DLL Windows, вероятно, будут сопоставлены с местами в памяти, которые занимают эти 2 ГБ, хотя их можно переместить с помощью метода, называемого перебазированием. В типичных 32-разрядных системах Windows, в зависимости от того, что установлено, вы можете получить от 1,2 до 1,4 Гб в непрерывном блоке, и это, следовательно, максимум, что вы можете получить в виде кучи Java.

Единственный реальный способ значительно увеличить это значение — переключиться на 64-разрядную систему. Существуют методы перемещения библиотек DLL и переключения на 3 ГБ для ограничения процесса, которые могут внести небольшое улучшение. Смотрите http://msdn.microsoft.com/en-us/windows/hardware/gg487508 для получения немного дополнительной информации.

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

1. Спасибо, я надеялся, что это не из-за 32-разрядности. К сожалению, это рабочая машина, и кто знает, когда мы получим 64…