Eclipse: java.lang.OutOfMemoryError: пространство PermGen

Моя конфигурация затмения.

Затмение: последняя версия (Kepler)

Мое затмение config.ini

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20130521-0416
-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40M
-Xmx512M

После обновления с Юноны на Кеплер. Но с тем же configuration я не сталкивался с какими-либо проблемами.

Исключение, с которым я столкнулся,

Caused by: java.lang.OutOfMemoryError: PermGen space
    at sun.misc.Unsafe.defineClass(Native Method)
    at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45)
    at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377)
    at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:28)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at net.sf.beanlib.provider.BeanPopulator.invokeMethodAsPrivileged(BeanPopulator.java:221)
    at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:194)
    at net.sf.beanlib.provider.BeanPopulator.processSetterMethod(BeanPopulator.java:172)
    at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:270)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean(ReplicatorTemplate.java:174)
    at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean(BeanReplicator.java:173)
    at net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean(Hibernate3JavaBeanReplicator.java:71)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable(ReplicatorTemplate.java:125)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:120)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:67)
    at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicate(Hibernate3CollectionReplicator.java:143)
    at net.sf.beanlib.provider.replicator.CollectionReplicator.replicateCollection(CollectionReplicator.java:88)
    at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicateCollection(Hibernate3CollectionReplicator.java:79)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:101)
    at net.sf.beanlib.provider.BeanTransformer.transform(BeanTransformer.java:224)
    at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:201)
    at net.sf.beanlib.provider.BeanPopulator.processSetterMethod(BeanPopulator.java:172)
    at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:270)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean(ReplicatorTemplate.java:174)
    at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean(BeanReplicator.java:173)
    at net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean(Hibernate3JavaBeanReplicator.java:71)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable(ReplicatorTemplate.java:125)
    at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:120)
      [ERROR] Out of memory; to increase the amount of memory, use the -Xmx flag at startup (java -Xmx128M ...)

Это продолжает говорить мне

[ОШИБКА] Недостаточно памяти; для увеличения объема памяти используйте флаг -Xmx при запуске (java -Xmx128M...)

Вот мои аргументы виртуальной машины

введите здесь описание изображения

В чем может быть проблема..

Спасибо за любую помощь.


person Suresh Atta    schedule 20.08.2013    source источник
comment
Хотя это касается Tomcat, а не Eclipse, это может быть полезно: stackoverflow.com/questions/88235/   -  person Andrew Martin    schedule 20.08.2013
comment
@AndrewMartin Где между ними оказался кот? Я не использую кота.   -  person Suresh Atta    schedule 20.08.2013
comment
Это тот же процесс. См. здесь: wiki.eclipse.org/   -  person Andrew Martin    schedule 20.08.2013
comment
Посмотрите [здесь][1], чтобы узнать, как избежать PermGen. [1]: stackoverflow.com/questions/7878306/   -  person Dileep    schedule 20.08.2013
comment
vmargs и -XX полезны, но по-разному. Посмотрите stackoverflow.com/a/10814631/715269.   -  person Gangnus    schedule 05.04.2016


Ответы (3)


Из вики Eclipse -

Почему я получаю ошибку java.lang.OutOfMemoryError: PermGen?

Максимальное пространство постоянного поколения по умолчанию, установленное вашей JRE, может быть слишком маленьким. Это не связано с максимально допустимым пространством кучи. Вы можете увеличить максимальный размер PermGen, запустив Eclipse с аргументом VM: -XX:MaxPermSize=128m

person Andrew Martin    schedule 20.08.2013
comment
Спасибо, чувак. Я не устанавливал это в свой Indigo, и все работает нормально. Не знаю, что не так с Кеплером :). Вы сделали мой день. - person Suresh Atta; 20.08.2013
comment
@sᴜʀᴇsʜᴀᴛᴛᴀ Вы можете указать их в -vmargs в файле eclipse.ini. Поэтому параметры XX были установлены по умолчанию. stackoverflow.com/a/10814631/715269 - person Gangnus; 05.04.2016
comment
А как насчет EXPORTED приложения? - person marcolopes; 30.11.2016

Увеличьте -vmargs до 512 и 1024 в eclipse.ini, закройте eclipse и снова откройте его.

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

person user2689075    schedule 20.08.2013
comment
Не downvoter, но я установил эти значения, без изменений в исключении. :( - person Suresh Atta; 20.08.2013
comment
Это увеличит кучу, а не пространство permgen, вам нужно установить -XX:MaxPermSize - person samlewis; 20.08.2013

Эта проблема также может быть связана с тем, что в списке запуска слишком много приложений, когда вы Run As ... Run on Server в eclipse.

Чтобы выяснить, в чем причина проблемы, вы можете просто нажать Next, чтобы увидеть список приложений, которые будут запущены, вместо того, чтобы торопиться нажать Finish.

Если вы видите другие приложения, кроме того, которое хотите запустить, просто удалите все ненужные приложения, чтобы было выбрано только ваше приложение, а затем нажмите Finish. Это потребует гораздо меньше памяти и, следовательно, не потребует от вас увеличения пространства PermGen.

person CodeMed    schedule 05.03.2015