【问题标题】:Eclipse:java.lang.OutOfMemoryError: PermGen spaceEclipse:java.lang.OutOfMemoryError: PermGen 空间
【发布时间】:2013-08-20 09:32:57
【问题描述】:

我的eclipse配置。

Eclipse : 最新版本 (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

在从 Juno 到 Kepler 更新之后。但是使用相同的 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 ...)

这是我的虚拟机参数

可能是什么问题..

感谢您的帮助。

【问题讨论】:

标签: java eclipse eclipse-kepler


【解决方案1】:

来自Eclipse wiki-

为什么会出现 java.lang.OutOfMemoryError: PermGen space?

您的 JRE 设置的默认最大永久生成空间可能是 太小。这与允许的最大堆空间无关。你 可以通过使用 VM 启动 Eclipse 来增加最大 PermGen 大小 参数:-XX:MaxPermSize=128m

【讨论】:

  • 谢谢伙计。我没有在我的 Indigo 中设置它并且工作正常。不知道开普勒有什么问题:)。你让我开心。
  • @sᴜʀᴇsʜᴀᴛᴛᴀ 您可以将它们放在 eclipse.ini 文件的 -vmargs 中。因此,XX 参数被设置为默认参数。 stackoverflow.com/a/10814631/715269
  • EXPORTED 应用怎么样?
【解决方案2】:

在 eclipse.ini 中将 -vmargs 增加到 512 和 1024 并关闭 eclipse 并再次打开它。

希望它能解决问题。

【讨论】:

  • 不是downvoter,但我设置了这些值,异常没有变化。 :(
  • 这会增加heap而不是permgen空间,需要设置-XX:MaxPermSize
【解决方案3】:

这个问题也可能是由于你在eclipse中Run As ... Run on Server时启动列表中的应用程序太多。

要找出问题的原因,您只需点击Next查看将要启动的应用程序列表,而不是匆忙点击Finish

如果您看到除了您要启动的应用程序之外的其他应用程序,只需删除所有不需要的应用程序,以便只选择您的应用程序,然后单击Finish。这将需要更少的内存,因此不需要您增加 PermGen 空间。

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    相关资源
    最近更新 更多