Eclipse падает с "Невозможно создать новый собственный поток" - любые идеи? (мои настройки и информация внутри)
У меня возникли проблемы с Eclipse, регулярно рубящим меня (и, как правило, вялым), и мне было интересно, может ли кто-нибудь дать мне какое-либо представление. Сообщение, которое выбрасывается, "Невозможно создать новый собственный поток".. В этот момент мне будет предложено перезапустить Eclipse. Это происходит примерно 5 раз в день.
Я использую Ecliipse Helios Service Release 2 (с плагином Flash Builder):
Windows Vista Business
Processor: Intel Core 2 Duo T7500 @ 2.20 GHz
Memory (RAM): 4.00 GB
System Type: 32-bit Operating System
Настройки eclipse.ini, которые были украдены из этого потока: каковы лучшие настройки jvm для eclipse:
-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
-vm
C:/jdk1.6.0_25/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xmn256m
-Xms1024m
-Xmx1024m
-Xss4m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-Dcom.sun.management.jmxremote
Спасибо за любую помощь!
изменить:
@normalocity - ошибка буквально только что произошла (исключение цикла Unhandled event), это после настройки моего eclipse.ini(я изменил Xss на 1m, MaxPermSize на 384m, Xms до 512). Вот дополнительная информация, которую вы запросили, трассировку стека исключений:
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
at org.eclipse.jface.text.contentassist.ContentAssistant$AutoAssistListener.start(ContentAssistant.java:263)
at org.eclipse.jface.text.contentassist.ContentAssistant$AutoAssistListener.keyPressed(ContentAssistant.java:345)
at com.adobe.flexide.editorcore.contentassist.FlexContentAssistant$FlexAutoAssistListener.keyPressed(FlexContentAssistant.java:47)
at org.eclipse.jface.text.contentassist.ContentAssistant$InternalListener.verifyKey(ContentAssistant.java:811)
at org.eclipse.jface.text.TextViewer$VerifyKeyListenersManager.verifyKey(TextViewer.java:489)
at org.eclipse.swt.custom.StyledTextListener.handleEvent(StyledTextListener.java:65)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774)
at org.eclipse.swt.custom.StyledText.handleKeyDown(StyledText.java:5957)
at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:5656)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1103)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1099)
at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1508)
at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4270)
at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
Ответы
Ответ 1
Похоже, что для нового стека потоков недостаточно памяти. В Windows пространство процессов 2GB. Для кучи вы первоначально выделяете 1Gb (-Xms option), поэтому она блокируется с самого начала. Минус 256 Мб для классов (PermSize), минус накладные расходы JVM, которые могут быть равны 0,5 ГБ. Таким образом, ваши потоки имеют только около 256 МБ для стеков, что составляет максимум 64 потока (256/4 м).
Решение: Попробуйте уменьшить размер стека до -Xss1024k или уменьшить начальный размер кучи (-Xms).
Ссылки по теме OutOfMemory: невозможно создать поток
В качестве побочного примечания -XX: MaxPermSize = 256m выглядит слишком мало для Eclipse для EE. Лучше установить значение 384.
Cheers,
Макс
Ответ 2
У меня также были проблемы с Eclipse Luna на Fedora 20. Я много читал о разных вариантах памяти и все еще не мог понять проблему. Это сводило меня с ума.
Наконец, я понял, что по умолчанию количество процессов, которые обычный пользователь может иметь на Fedora, очень ограничен. Содержимое limit.d/90-nproc.conf:
* soft nproc 1000
Подняв это значение до 5000, я исправил свои проблемы "Невозможно создать новый собственный поток".