Plataforma
Estou usando o Eclipse Kepler 4.3.2 (.M20140221-1700) no Windows 7 Professional de 64 bits sendo executado em um Dell E6500 com 8 GB de RAM. Java VM é 1.7_u51. A Atualização Automática de Java está ativa, assim como o Windows Update.
Sintomas
Eles começaram em 9 de abril, até onde eu sei. Tudo estava funcionando perfeitamente antes. Ao editar alguns arquivos (não todos, mas de vários tipos diferentes: .html, .php, .js, até .css) de vez em quando, o Eclipse para de responder por vários segundos.
Há alguma conexão com o assistente de conteúdo, já que chamar o assistente de conteúdo com Ctrl-Space acionará um congelamento imediato nos arquivos em que o congelamento acontece .
O arquivo .metadata/.log
relata um erro Sem memória , mas acredito que seja um arenque vermelho - é outro sintoma, não a causa real:
!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)
Pensando inicialmente que o problema não era memória suficiente , eu aumentei o tamanho de heap do Eclipse . Isso realmente prolongou o tempo de congelamento.
Hipótese até agora
Algo está acontecendo que pode ser acionado pelo Content Assist, e causa um loop infinito que vaza memória até que a sub-rotina desista. Aumentando a memória disponível, posso fazer o Eclipse gastar um minuto inteiro antes de preencher 4 GB de RAM e desistir; e eu posso melhorar um pouco o problema diminuindo o heap para 40 Mb, o que leva apenas quatro ou cinco segundos para abortar (mas eu preciso de um heap maior para outros propósitos, então essa não é uma solução viável e não é assim que você resolver um problema).
Tentativas e investigações
-
08 de abril de 2014, quando os problemas começaram, foi um Patch Tuesday. Naquela época, as seguintes atualizações foram enviadas. Nada disso parece relacionado a qualquer coisa que possa afetar o Eclipse; Tentei recuperar 2922229 e 2929437 sem sucesso, depois os reinstalei.
-
KB2928562 relacionado ao EFS
- KB2922229 MS14-019 relacionado a .BAT e .CMD.
-
KB2908783 relacionado a iSCSI
- KB2929437 relacionado ao IE11
- KB2830477 RemoteApp relacionado
- KB2800095 SmartCard relacionado
- KB2936068 MS14-018 relacionado ao IE11
- KB2923545 Confiabilidade da conexão no RDP 8.1
-
Desativar o Assistente de conteúdo nos editores de HTML e Javascript desabilitando primeiro a ativação automática e, em seguida, desmarcando todos os tipos de propostas (Word, modelo, outro Javascript) reduz o problema, mas não o resolve.
-
A técnica normal de vodu de iniciar o Eclipse no modo de faxina, que costumava corrigir os problemas mais desconcertantes ( eclipse -clean -clearPersistedState
) também aproveitou pouco.
-
Limpar o eclipse.ini não produziu resultados.
-
O monitoramento de arquivos e atividades de rede com o FileMon / ProcMon / wireshark não revelou nada relevante.
Arenque Vermelho
-
O tamanho da pilha não é uma solução, conforme detalhado acima.
-
Eu recebi outro erro que não tenho certeza se está relacionado, "Identificador do problema de decodificação de erro 1073741824". Sendo 0x40000000 em hexadecimal, parece-me espúrio. De qualquer forma, pesquisando não produziu nada relevante, e incluindo o erro de digitação original (ele chama o número de um problema idenfier em vez de um identificador ) reforçou minha opinião de que é um código espúrio .
Próximos passos
A falta de pistas encontradas até agora me faz pensar que estou perdendo alguma coisa realmente óbvia, mas antes de prosseguir com a estratégia "terra queimada" - remover completamente o Eclipse e reinstalar novamente e reimportar todas as minhas projetos - eu decidi pedir cabeças mais sábias do que as minhas.
Enquanto isso, vou tentar remover todos os plugins desnecessários e desnecessários do Eclipse.
Se você não conseguir, acho que terei uma chance no NetBeans 8.