2012-01-30 5 views
2

У меня возникли проблемы с запуском затмения. Это исключение, которое было выброшено после крушения сегодня. Я не понимаю, почему я не могу запустить стандартное eclipse на моей машине Linux. Кто-нибудь знает, в чем проблема? Я пытался изменить JVM сто раз. Похоже, что сработано с eclipse.ini.Аварии Eclipse

Я запускаю Eclipse 64 3.7.1 на RHEL5 AMD64;

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

Возможно, вы захотите переосмыслить свои настройки Xms и Xmx. Они действительно большие для нормальной разработки приложений. – Jeroen

+0

До сих пор никакие настройки не работают в ini-файле, есть ли другое место, где я могу установить размеры кучи и объема памяти? – Randnum

ответ

2

Возможно, возникло множество проблем, связанных с сбоем eclipse с помощью java.lang.OutOfMemoryError.

Проверьте, не находится ли устройство в памяти. Вы можете сделать это с помощью команды free. Запуск с низким по памяти, скорее всего, не проявится таким образом, хотя, если вы отключили overcommit.

Проверьте лимиты размера виртуальной памяти для каждого процесса с помощью команды ulimit -v.

Позвольте JVM захватить большую кучу, используя флаг -Xmx.

В вашем затмении может быть загружено много плагинов. Каждый плагин содержит несколько классов, и все эти классы хранятся в постоянном поколении кучи. Попробуйте отключить некоторые плагины или увеличить размер постоянной генерации с помощью флагов JVM -XX:MaxPermSize.

EDIT: Теперь, когда вопрос был расширен с помощью полной строки следа стека и строки сообщения исключения, очевидно, что размер постоянного поколения неадекватен. Таким образом, как было предложено выше, увеличьте его размер с помощью -XX:MaxPermSize или попробуйте отключить некоторые плагины. Возможно, вы недавно добавили плагин, который включает в себя множество классов?

+0

Для кого-то еще с той же проблемой также проверьте: ваша проблема может быть утечкой укладчика класса http://stackoverflow.com/questions/9072656/setting- -maxperm JVM-размерного снаружи из-затмение-INI/9072780 # 9072780 – Randnum

0

Возможно, указывая очевидное, но он говорит, что память не работает на вашем компьютере, работающем на памяти?

Попробуйте запустить vm args, чтобы выделить больше памяти.

eclipse -vmargs -Xmx512m

+0

Смотрите мои обновления для моего Eclipse.ini, возможно, вы можете заметить что-то не так. – Randnum

+0

Запустите JProfiler и посмотрите, можете ли вы видеть, куда идет вся память. Здесь доступна бесплатная пробная версия (http://www.ej-technologies.com/download/jprofiler/trial), и eclipse поддерживает этот интерфейс по умолчанию, если я правильно помню –

0

Переход только на этот журнал. Насколько я вижу, это проблема с размером памяти. Вы пытались взглянуть на объем памяти, данный слишком Eclipse при запуске? Возможно, вы настроили параметры JVM по умолчанию. Вы можете проверить запущенный процесс Eclipse с помощью «ps -aux» с терминала после запуска Eclipse.

Вы должны увидеть что-то вроде -Xmx512m или -XX: MaxPermSize = 128m. Вы также можете взглянуть на свой eclipse.ini, чтобы узнать, есть ли какие-то настройки, связанные с памятью.

+0

Как мой eclipse.ini выглядит выше? – Randnum

+0

Не могли бы вы также указать версию Eclipse, JVM и ОС. Возможно, вы попали в эту [ошибку] ​​(https://bugs.eclipse.org/bugs/show_bug.cgi?id=319514), как указано в Eclipse [FAQ] (http: //wiki.eclipse. org/FAQ_How_do_I_increase_the_permgen_size_available_to_Eclipse% 3F) – Jeroen

+0

Eclipse 64 JEE helios 3.7.1 на Linux RHEL5 64 – Randnum