O Eclipse (Kepler) pára periodicamente de responder por alguns segundos

4

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.

    
por LSerni 10.04.2014 / 13:31

2 respostas

1

Epílogo

Como eu havia planejado, eu removi e reinstalei o Kepler ... sem nenhum efeito.

Então, enquanto eu estava configurando o "Operation Scorched Earth" e, portanto, inventando todos os softwares que eu teria que reinstalar, eu notei que eu tinha uma atualização Java mais ou menos no mesmo período de tempo.

Então eu:

  • removido novamente Kepler,
  • removeu o Java também
  • executou uma otimização do registro (o CCleaner do Pirisoft) que encontrou todos os tipos de problemas com o meu registro (o que é comum para vários "otimizadores" obscuros, e só ocorre no CCleaner quando há algo errado; bom limpador eu posso recomendar é Auslogics ').
  • reinstalou a última atualização do Java,
  • reinstalado Kepler
  • verificado em eclipse.ini que eu estava usando a nova VM
  • reimportou um projeto
  • testou. Até aí tudo bem ...
  • reinstalou todos os vários plugins
  • reimportou todos os outros projetos
  • testamos um por um
  • e desta vez, funcionou!

Foi a atualização? Foi a limpeza do registro? Eu poderia não configurar a VM correta na primeira vez (ou seja, minha verificação era na verdade uma alteração de configuração )? Eu não sei honestamente.

Agora, eu ocasionalmente ainda tenho problemas com o projeto que é hospedado remotamente (ou seja, os arquivos são acessados por meio de uma VPN). Tenho certeza que isso significa apenas que o Eclipse não suporta bem a latência da rede. Mas não mais congela de outra forma.

    
por 05.09.2014 / 22:20
1

Esse problema também estava ocorrendo em uma CPU Intel Core i5 com 4 GB de RAM instalada. Ele estava trabalhando em cerca de 50% de uso de RAM e sem sobrecarga de CPU. No entanto, o eclipse estava congelando toda vez que eu comandava qualquer evento do mouse. Eu notei que o .metadata / .log estava cheio de erros do IDE.

Então eu desinstalei todos os plugins e o eclipse parou de congelar. Acabei de instalar apenas plugins de subversão e CDT e o eclipse ainda está funcionando normalmente. Eu ainda não sei exatamente qual plugin estava causando o congelamento.

    
por 25.09.2014 / 16:10