Проблема выделения памяти в Eclipse - PullRequest
3 голосов
/ 22 сентября 2010

Я пытаюсь проанализировать дамп кучи ~ 800 Мб, который требует большей кучи, чем стандарт для моего затмения. однако, когда я захожу в файл eclipse.ini и задаю -Xmx2g (или -Xmx2048m), я получаю сообщение об ошибке «Не удалось создать виртуальную машину Java».

1) да, мне достаточно памяти. 2) Я могу изменить его до точно -Xmx976m. 3) Я пробовал автономный анализатор MAT, и он работает с -Xmx1024m, а не с байтом. 4) Нет, 1 ГБ недостаточно для анализа этой кучи, я получаю OOM

Это ошибка затмения: alt text

Это ошибка MAT: alt text

(я считаю, что они одинаковы, это просто, чтобы вы могли увидеть пример с 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 ]

5 голосов
/ 22 сентября 2010

Эта проблема, которую вы видите в Windows, я полагаю?

У меня была такая же проблема. После прочтения вашей проблемы я снова начал копать. Я только что нашел решение своей проблемы. Если это то же самое, попробуйте. В своем ini-файле Eclipse или MemoryAnalyzer удалите параметр - из параметра Xmx. Мой INI-файл становится

-vmargs
Xmx1536m

и теперь работает как брелок с большей памятью. Благодаря комментарию Alex2308 в этой теме http://troyworks.com/blog/2008/06/08/eclipse-jvm-terminated-exit-code-1/comment-page-1/#comment-80


Моим предыдущим решением было получить диск Linux Live. загрузиться с Linux, и тогда я смог выделить 2g в MAT без проблем. (убедитесь, что вы получили MAT для Linux)

Не самая лучшая работа, но я никогда не мог найти ничего на форумах MAT, указывающих на ошибку.

2 голосов
/ 30 сентября 2010

Похоже, вы на 32-битной виртуальной машине. Виртуальная машина Java пытается зарезервировать все пространство памяти в одном блоке, что означает, что в зависимости от того, где находится ваша системная библиотека DLL, она не сможет получить столько памяти. Переключение на 64-битную виртуальную машину (которая, очевидно, требует 64-битного процессора и ОС) должно исправить это.

1 голос
/ 25 ноября 2013

Изменили ли вы параметр среды выполнения Java в панели управления Java?Добавив параметр времени выполнения, например -Xmx3072m в столбец параметра времени выполнения.

Возможно, вы сможете проверить подробности здесь ..

Увеличение JVM в Windows 7

Надеюсь, это поможет решить вашу проблему ..

0 голосов
/ 23 сентября 2010

Я создал поддельное приложение для проверки параметров 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, куча будет начинаться с любого размера, который вы говорите, даже если это подходит для свопинга.

Для тех, у кого есть эта проблемана окнах: сначала проверьте Ctrl + Shift + Esc -> производительность -> Физическая память;и установите значение Xmx примерно таким же, как показано в «Доступно».

Было бы здорово, если бы кто-то мог сказать, как помешать JVM проверить, достаточно ли у вас свободной памяти перед запуском.Используемые 1,5 грамма работали, так как я обрабатываю дамп кучи всего 800 МБ, но если бы он был немного больше, у меня не было бы места для запуска ...

ура,

е.

...