Проблема выделения памяти в Eclipse
Я пытаюсь проанализировать дамп кучи ~800 МБ, который требует больше кучи, чем стандартное для моего затмения. однако, когда я иду в файл eclipse.ini и устанавливаю -Xmx2g
(или же -Xmx2048m
) Я получаю сообщение об ошибке "Не удалось создать виртуальную машину Java".
1) да, мне хватает памяти. 2) Я могу изменить его до точно -Xmx976m. 3) Я пробовал автономный анализатор MAT, и он работает с -Xmx1024m, а не с байтом. 4) Нет, 1gb недостаточно для анализа этой кучи, я получаю OOM
Это ошибка затмения:
Это ошибка MAT:
(Я считаю, что они одинаковы, это просто, чтобы вы могли увидеть пример с MAT)
Мой текущий eclipse.ini (работает):
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
Кто-нибудь выяснит это?
Спасибо!
е.
4 ответа
Я создал поддельное приложение для проверки параметров jvm, и обнаружил, что JVM, похоже, не меняет местами в Windows, по крайней мере, не формирует загрузку. У меня есть 4 ГБ оперативной памяти, но это позволяет мне только выделить оставшееся свободное пространство. Странно, как это работает по-разному для разных приложений: мое поддельное приложение позволило мне подняться до Xmx1380m, а затмение только до Xmx1024m.
Ошибка выглядит так:
$ java -jar -Xmx1500m "C:\fakeapp.jar"
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
То же самое, но -Xmx1380g и приложение прошло нормально.
Никогда не было этой проблемы в Unix, куча будет начинаться с любого размера, который вы говорите, даже если он идет прямо на своп.
Для тех, кто имеет эту проблему в Windows: сначала проверьте Ctrl + Shift + Esc -> Производительность -> Физическая память; и установите значение Xmx примерно таким же, как показано в "Доступно".
Было бы здорово, если бы кто-то мог сказать, как помешать JVM проверить, действительно ли у вас достаточно свободной памяти перед запуском. Используемые 1,5 грамма работали, так как я обрабатываю дамп кучи размером всего 800 МБ, но если бы он был немного больше, у меня не было бы места для запуска...
веселит,
е.
Я полагаю, эта проблема на окнах?
Я была такая же проблема. После прочтения вашей проблемы я снова начал копать. Я только что нашел решение своей проблемы. Если это то же самое, попробуйте. В ini-файле Eclipse или MemoryAnalyzer удалите параметр - из параметра Xmx. Мой INI-файл становится
-vmargs
Xmx1536m
и теперь работает как брелок с большей памятью. Благодаря комментарию Alex2308 в этой теме http://troyworks.com/blog/2008/06/08/eclipse-jvm-terminated-exit-code-1/comment-page-1/
Моим предыдущим решением было получить диск Linux Live. загрузиться с Linux, и тогда я смог выделить 2g в MAT без проблем. (убедитесь, что вы получили MAT для Linux)
Не лучшая работа, но я никогда не мог найти ничего на форумах MAT, указывающих на ошибку.
Похоже, вы на 32-битной виртуальной машине. Виртуальная машина Java пытается зарезервировать все пространство памяти в одном блоке, что означает, что в зависимости от того, где находится ваша системная библиотека DLL, она не сможет получить столько памяти. Переключение на 64-битную виртуальную машину (которая, очевидно, требует 64-битного процессора и ОС) должно исправить это.
Изменили ли вы параметр среды выполнения Java в панели управления Java? Добавив параметр времени выполнения, например, -Xmx3072m в столбец параметра времени выполнения.
Может быть, вы можете проверить детали здесь..
Надеюсь, это поможет решить вашу проблему..