我在运行eclipse时遇到了问题。这是今天崩溃后抛出的异常。我不明白为什么我不能在我的Linux机器上运行标准的eclipse。有谁知道问题可能是什么?我试过改变JVM一百次。与eclipse.ini混淆似乎没什么用。
我在RHEL5 AMD64上运行Eclipse 64 3.7.1;
Exception in thread "Worker-4"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "Worker-4"
Exception in thread "Keep-Alive-Timer"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "Keep-Alive-Timer"
Exception in thread "Worker-2"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "Worker-2"
Exception in thread "Worker-6"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "Worker-6"
Error while logging event loop exception:
Exception in thread "Worker-3"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "Worker-3"
Exception in thread "Worker-7"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "Worker-7"
Exception in thread "[Timer] - Main Queue Handler"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler i n thread "[Timer] - Main Queue Handler"
Exception in thread "Worker-5"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Worker-5"
Exception in thread "Worker-8"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Worker-8"
Exception in thread "Worker-10"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Worker-10"
Exception in thread "Worker-9"
我试过在eclipse.ini文件中增加内存。以下是崩溃时的一些错误:
Error while informing user about event loop exception:
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(
DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(Clas
spathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(Cl
asspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassIm
pl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_L
ockClassName(ClasspathManager.java:469)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(C
lasspathManager.java:456)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalCla
ss(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLo
ader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(Bundl
eLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(De
faultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(
DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(Clas
spathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(Cl
asspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassIm
pl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_L
ockClassName(ClasspathManager.java:469)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(C
lasspathManager.java:456)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalCla
ss(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLo
ader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(Bundl
eLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(De
faultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.equinox.internal.p2.metadata.expression.CollectionFilter.
getInnerIterator(CollectionFilter.java:106)
at org.eclipse.equinox.internal.p2.metadata.expression.CollectionFilter.
evaluate(CollectionFilter.java:56)
Dialog open exception:
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(
DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(Clas
spathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(Cl
asspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassIm
pl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_L
ockClassName(ClasspathManager.java:469)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(C
lasspathManager.java:456)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalCla
ss(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLo
ader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(Bundl
eLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(De
faultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(
DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(Clas
spathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(Cl
asspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassIm
pl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_L
ockClassName(ClasspathManager.java:469)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(C
lasspathManager.java:456)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalCla
ss(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLo
ader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(Bundl
eLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(De
faultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.openInternalQues
tionDialog(IDEWorkbenchErrorHandler.java:225)
at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.openQuestionDial
og(IDEWorkbenchErrorHandler.java:194)
Fatal error happened during workbench emergency close.
java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(
DefaultClassLoader.java:188)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(Clas
spathManager.java:601)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(Cl
asspathManager.java:567)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassIm
pl(ClasspathManager.java:490)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_L
ockClassName(ClasspathManager.java:469)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(C
lasspathManager.java:456)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalCla
ss(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLo
ader.java:400)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(Bundl
eLoader.java:476)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.
java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(De
faultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1277)
at org.eclipse.ui.internal.WorkbenchConfigurer.emergencyClose(WorkbenchC
onfigurer.java:165)
at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.closeWorkbench(I
DEWorkbenchErrorHandler.java:253)
at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.handleException(
IDEWorkbenchErrorHandler.java:155)
at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.access$0(IDEWork
benchErrorHandler.java:146)
at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler$1.runInUIThread(
IDEWorkbenchErrorHandler.java:121)
at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.ja va:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3563)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3212)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.ja va:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.jav a:667)
Error while logging event loop exception:
java.lang.OutOfMemoryError: PermGen space
Logging exception:
java.lang.OutOfMemoryError: PermGen space
Error while informing user about event loop exception:
java.lang.OutOfMemoryError: PermGen space
Dialog open exception:
java.lang.OutOfMemoryError: PermGen space
Error while informing user about event loop exception:
java.lang.OutOfMemoryError: PermGen space
Dialog open exception:
java.lang.OutOfMemoryError: PermGen space
Error while logging event loop exception:
java.lang.OutOfMemoryError: PermGen space
Logging exception:
java.lang.OutOfMemoryError: PermGen space
Error while logging event loop exception:
java.lang.OutOfMemoryError: PermGen space
这是我的Eclipse.ini文件:
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms1024m
-Xmx1800m
我在这里再次提出这个问题:Setting JVM maxperm size outside of Eclipse.ini并且对于遇到此问题的其他人都收到了一个很好的答案。
答案 0 :(得分:2)
使用java.lang.OutOfMemoryError
可能导致日食崩溃的潜在问题很多。
检查您的机器是否内存不足。您可以使用free
命令执行此操作。但是,内存不足很可能不会以这种方式显示,除非您已禁用overcommit。
使用ulimit -v
命令检查每个进程的虚拟内存大小限制。
允许JVM使用-Xmx
标志获取更大的堆。
您的日食可能会加载很多插件。每个插件都包含许多类,所有这些类都存储在堆的永久生成中。尝试使用-XX:MaxPermSize
JVM标志禁用某些插件或增加永久生成大小。
编辑:既然已经使用完整堆栈跟踪和异常消息字符串扩展了问题,很明显永久生成大小不足。因此,如上所述,使用-XX:MaxPermSize
增加其大小或尝试禁用某些插件。也许你最近添加了一个包含很多类的插件?
答案 1 :(得分:0)
答案 2 :(得分:0)
仅限此日志。据我所知,这是与内存大小相关的问题。你有没有尝试过看看Eclipse启动时的内存量?您是否配置了任何默认的JVM参数。在Eclipse启动后,您可以从终端使用'ps -aux'检查正在运行的Eclipse进程。
您应该看到类似-Xmx512m或-XX:MaxPermSize = 128m的内容。您可能还想查看一下eclipse.ini,看看是否存在一些与内存相关的设置。