5

Платформа

Я использую Eclipse Kepler 4.3.2 (.M20140221-1700) на 64-битной Windows 7 Professional, работающей на Dell E6500 с 8 ГБ ОЗУ. Java VM - это 1.7_u51. Java Auto Update активен так же, как и Windows Update.

симптомы

Насколько я могу судить, они начались 9 апреля. Все работало отлично раньше. При редактировании некоторых файлов (не всех, но нескольких разных типов: .html, .php, .js, даже .css) время от времени Eclipse перестает отвечать на несколько секунд.

Существует некоторая связь с помощником по содержимому, так как вызов помощника по содержимому с помощью Ctrl-Space вызовет немедленное замораживание в тех файлах, где происходит замораживание.

.metadata/.log сообщает об ошибке « Недостаточно памяти» , но я считаю, что это красная сельдь - это еще один симптом, а не настоящая причина:

!ENTRY org.eclipse.e4.ui.workbench 4 0 2014-04-10 12:55:13.296
!MESSAGE 
!STACK 0
org.eclipse.e4.core.di.InjectionException: java.lang.OutOfMemoryError: Java heap space
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:243)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:224)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
    at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:167)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:285)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:504)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:555)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:376)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:322)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:84)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1056)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1108)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
    at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1525)
    at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4723)
    at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:344)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4611)

Первоначально подумав, что проблема в нехватке памяти, я увеличил размер кучи Eclipse. Это фактически продлило время замораживания.

Гипотеза пока

Происходит что-то, что может быть вызвано Content Assist и вызывает бесконечный цикл, который приводит к утечке памяти, пока подпрограмма не сдается. Увеличив доступную память, я могу заставить Eclipse потратить целую минуту, прежде чем заполнить 4 ГБ ОЗУ и сдаться; и я могу несколько улучшить проблему, уменьшив кучу до 40 Мб, а для прерывания потребуется всего четыре или пять секунд (но мне нужна большая куча для других целей, так что это не жизнеспособный обходной путь, и, тем не менее, это не так, как вы решить проблему).

Попытки и расследования

  • 8 апреля 2014 года, когда начались неприятности, был вторник патчей. Примерно в это же время были отправлены следующие обновления. Кажется, ни один из них не связан с чем-то, что может повлиять на Затмение; Я попытался откат 2922229 и 2929437 безрезультатно, а затем переустановил их.

    • KB2928562 EFS, связанные
    • KB2922229 MS14-019, относящийся к.BAT и.CMD.
    • KB2908783 iSCSI связанный
    • KB2929437 IE11 связанных
    • KB2830477 RemoteApp связанных
    • KB2800095 SmartCard связанный
    • KB2936068 MS14-018, связанный с IE11
    • KB2923545 Надежность соединения в RDP 8.1
  • Отключение помощника по содержимому в редакторах HTML и Javascript путем отключения автоматической активации, а затем снятия отметки со всех типов предложений (Word, Template, Other Javascript) уменьшает проблему, но не решает ее.

  • Нормальная техника вуду запуска Eclipse в режиме уборки помещений, которая использовалась для устранения самых неприятных проблем (eclipse -clean -clearPersistedState), также использовалась мало.

  • Очистка eclipse.ini не дала результатов.

  • Мониторинг файловой и сетевой активности с помощью FileMon/ProcMon/wireshark не выявил ничего уместного.

Красная сельдь

  • Размер кучи не является решением, как описано выше.

  • Я получил еще одну ошибку, которая, я не уверен, связана с "Ошибка декодирования идентификатора проблемы 1073741824". Будучи 0x40000000 в шестнадцатеричном формате, мне это кажется странным. В любом случае, поиск в Google не дал ничего уместного, и включение оригинальной опечатки (она называет число идентификатором проблемы вместо идентификатора) укрепило мое мнение о том, что это ложный код.

Следующие шаги

Недостаток улик, обнаруженных до сих пор, заставляет меня думать, что я упускаю что-то действительно очевидное, но прежде чем перейти к стратегии "выжженной земли" - полностью удалить Eclipse и заново установить заново, а также заново импортировать все мои проекты - я решил спросить более мудрые головы, чем мои ,

Тем временем я постараюсь удалить все ненужные и не жизненно необходимые плагины из Eclipse.

Если все это не удастся, я думаю, у меня будет шанс попробовать NetBeans 8.

2 ответа2

1

Эта проблема возникала также на процессоре Intel Core i5 с 4 ГБ ОЗУ. Он работал примерно на 50% оперативной памяти и без перегрузки процессора. Однако затмение замерзало каждый раз, когда я командую каким-либо событием мыши. Я заметил, что .metadata/.log был полон ошибок IDE.

Поэтому я удалил все плагины, а затем затмение перестало зависать. Я только что установил только плагины Subversion и CDT, и затмение по-прежнему работает нормально. Я пока не знаю точно, какой плагин вызывал зависание.

1

эпилог

Как я и планировал, я удалил и переустановил Kepler ... без какого-либо эффекта.

Итак, при настройке "Операции с выжженной землей" и, следовательно, изобретении всех программ, которые мне нужно было переустановить, я заметил / вспомнил, что у меня также было обновление Java более или менее за тот же период времени.

Так что я:

  • снова снял Кеплер,
  • убрал Java тоже,
  • провел оптимизацию реестра (CCleaner от Pirisoft), которая обнаружила всевозможные проблемы с моим реестром (что обычно бывает для нескольких теневых "оптимизаторов", и происходит в CCleaner только тогда, когда действительно что-то не так; другой хороший очиститель, который я могу порекомендовать, это Auslogics ').
  • переустановил последнее обновление Java,
  • переустановил кеплер
  • подтвердил в eclipse.ini что я использую новую виртуальную машину
  • реимпортировал проект
  • проверил это. Все идет нормально...
  • переустановил все различные плагины
  • повторно импортировал все другие проекты
  • проверил их один за другим
  • и на этот раз это сработало!

Было ли это обновление? Была ли это чистка реестра? Мог ли я не установить правильную виртуальную машину с первого раза (т.е. моя проверка фактически была изменением конфигурации)? Я честно не знаю.

Теперь у меня иногда все еще возникают проблемы с одним проектом, который размещен удаленно (т.е. доступ к файлам осуществляется через VPN). Я совершенно уверен, что это означает только то, что Eclipse плохо справляется с задержкой в сети. Но больше не зависает в противном случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .