
При возникновении ошибки
java.lang.OutOfMemoryError: PermGen space
Eclipse может просто
неожиданно завершить работу и предложить просмотреть логи.
Хочу заметить, что я впервые встретился с этой ошибкой, когда начал использовать
Eclipse для рисования
UML диаграмм. То есть в тот момент, когда
Eclipse начал использовать плагины
org.eclipse.gef и
org.eclipse.emf,
а эти плагины есть также в
Eclipse IDE for Java EE Developers. В этом можно убедиться
тут.
Также эта ошибка может появляться при использовании HQL запросов, когда активно используется Hibernate.
Почему возникает эта ошибка сейчас я описывать не буду. Об этом можно почитать, например,
в этой статье (на английском)
И так, если кратко, то решить быстро это проблему можно так:
в
директории, где находится
eclipse или
eclipse.exe (для Windows) нужно найти файл
eclipse.ini и открыть в текстовом редакторе, в котором нужно добавить/отредактировать следующие строки:
-Xms512m-Xmx512m
-XX:PermSize=512m -XX:MaxPermSize=512mЭто пример моих настроек. Настраивайте параметры в зависимости от объема памяти на вашем компьютере. Кратко об этих параметрах:
Xms - это минимальный объем выделяемой памяти (кучи - heap)
Xmx - это максимальный объем выделяемой памяти (кучи - heap)
XX:PermSize - это начальный размер
permanent generation (о нем подробней позже...). Он создается в дополнение к объему
Xms.
XX:MaxPermSize - максимальный размер
permanent generation.
Теперь осталось запустить eclipse c ключем
-cleaneclipse -clean(
Примечание: начиная с версии
3.4 (
GANYMEDE) запускать
-clean не нужно)
НО! Все-таки нужно убедиться что эти параметры задействованы. Дело в том, что на некоторых
Unix*
ОС настройки файла
eclipse.ini не срабатывают, даже если описаны правильно.
Для того, чтобы убедиться изменения в настройках можно просмотреть:
Help -> About Eclipse Platform -> Configuration detailsи смотрим строку
eclipse.vmargs=Чтобы окончательно победить проблему есть 2 способа:
1-й способ. Window -> Preferences -> Java -> Installed JREs -> выбор нашего JRE -> Edit и в строке
Default VM Arguments пишем
-vmargs -Xms512m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=512m2-й способ. Написать скрипт запуска
eclipse. Например, в создать файл
eclipse.sh, дать права на запуск (
+х) и прописать в файле:
#!/bin/basheclipse -vmargs -Xms512m -Xmx512m -XX:PermSize=512m -XX:MaxPermSize=512mНадеюсь, этот баг больше возникать не будет ;)
О дополнительных способах борьбы с этой проблемой можно почитать
в этой статьеPS Доп. материал:
Tuning Garbage Collection with the 5.0 Java[tm] Virtual MachineFrequently Asked Questions about Garbage Collection in the HotspotTM JavaTM Virtual MachineJava Performance DocumentationTuning Java Virtual Machines (JVMs)Memory Analyzer (MAT)