Quais são as melhores configurações de JVM para Eclipse? [fechadas]


315

Quais são as melhores configurações de JVM encontradas para executar o Eclipse?


8
As eclipse.iniconfigurações novas e aprimoradas do Helios 3.6 estão aqui (abaixo, em uma nova resposta): stackoverflow.com/questions/142357/…
VonC

6
É surpreendente que a questão fechada como não construtiva tem uma classificação tão alta ...
bancer

1
Esta pergunta foi feita quando a resposta mais recente para uma pergunta como essa em 2008 foi eclipsezone.com/eclipse/forums/t20732.html . O conjunto de respostas aumentou porque novas versões do eclipse e java foram lançadas, atualizações subsequentes mantiveram as respostas atualizadas. Fechar a pergunta resultará em respostas obsoletas. A única maneira que eu posso pensar em reformular esta questão seria a de torná-lo versão específica, o que eu acho que é pior, uma vez que poderia causar várias perguntas para responder, basicamente, o mesmo problema
Craig Angus

10
Concordo - fechar perguntas como essa é loucura - loucura eu digo - perguntas como essa são as mais úteis e interessantes do site!
Luigi Plinge

3
De acordo com o motivo do fechamento, "esperamos que as respostas envolvam geralmente fatos, referências ou conhecimentos específicos". Eu acho que encerrar esta questão é um exagero. Sejamos cuidadosos usando os poderes da censura. Eu diria que, em caso de dúvida, é melhor "deixar o conhecimento livre" e abrir.
luiscolorado

Respostas:


315

É essa época do ano novamente: "eclipse.ini take 3" as configurações voltam!

Configurações do Eclipse Helios 3.6 e 3.6.x

texto alternativo http://www.eclipse.org/home/promotions/friends-helios/helios.png

Após ajustes para Eclipse Ganymede 3.4.x e Eclipse Galileo 3.5.x , aqui é um olhar em profundidade em um "otimizado" eclipse.ini arquivo de configurações para Eclipse Helios 3.6.x:

( por "otimizado", quero dizer capaz de executar um Eclipse completo em nossa estação de trabalho de baixa qualidade no trabalho, algum P4 antigo de 2002 com 2Go RAM e XPSp3. Mas também testei essas mesmas configurações no Windows7 )

Eclipse.ini

texto alternativo

AVISO : para plataformas não Windows, use a opção proprietária da Sun em -XX:MaxPermSizevez da opção proprietária do Eclipse --launcher.XXMaxPermSize.
Ou seja: A menos que você esteja usando a versão 7 mais recente do jdk6u21 . Veja a seção Oracle abaixo.

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vm
C:/Prog/Java/jdk1.6.0_21/jre/bin/server/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/Prog/Java/eclipse_addons

Nota:
Adapte-o p2.reconciler.dropins.directorya um diretório externo de sua escolha.
Veja esta resposta SO . A idéia é poder descartar novos plugins em um diretório independentemente de qualquer instalação do Eclipse.

As seções a seguir detalham o que há nesta eclipse.ini arquivo.


O temido Oracle JVM 1.6u21 (pré-build 7) e o Eclipse travam

Andrew Niefer me alertou sobre essa situação e escreveu um post no blog sobre um argumento vm não padrão ( -XX:MaxPermSize) e pode fazer com que vms de outros fornecedores não iniciem.
Mas a versão eclipse dessa opção (--launcher.XXMaxPermSize ) não está funcionando com o novo JDK (6u21, a menos que você esteja usando o 6u21 build 7, veja abaixo).

o finalA solução está no Wiki do Eclipse e no Helios no Windows com apenas 6u21 pré-build 7 :

(eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503

É isso aí. Nenhuma configuração para ajustar aqui (novamente, apenas para o Helios no Windows com um 6u21 pré-build 7 ).
Para a plataforma não-Windows, você precisa reverter para a opção proprietária Sun -XX:MaxPermSize.

O problema é baseado em uma regressão: a identificação da JVM falha devido ao rebranding da Oracle no java.exe e acionou o bug 319514 no Eclipse.
Andrew cuidou do Bug 320005 - [launcher] --launcher.XXMaxPermSize: isSunVMdeve retornar true para Oracle , mas isso será apenas para Helios 3.6.1.
Francis Upton , outro colaborador do Eclipse, reflete sobre toda a situação .

Atualização u21b7, 27 de julho : a
Oracle regrediu a alteração para a próxima versão do Java 6 e não a implementará novamente até o JDK 7 .
Se você usar o jdk6u21 build 7 , poderá reverter para a --launcher.XXMaxPermSize(opção eclipse) em vez de -XX:MaxPermSize(a opção não padrão).
A detecção automática queeclipse.exeSun Microsystems ocorre no calço do iniciador C ainda procurará a " " sequência, mas com 6u21b7, ela agora funcionará - novamente.

Por enquanto, ainda mantenho a -XX:MaxPermSizeversão (porque não tenho idéia de quando todo mundo vai lançar o JDK certo ).


Implícito `-startup` e` --launcher.library`

Ao contrário das configurações anteriores, o caminho exato para esses módulos não é mais definido, o que é conveniente, pois pode variar entre diferentes versões do Eclipse 3.6.x:

  • startup: se não for especificado, o executável procurará no diretório plugins o org.eclipse.equinox.launcherpacote com a versão mais alta.
  • launcher.library: se não especificado, o executável procura no pluginsdiretório o org.eclipse.equinox.launcher.[platform]fragmento apropriado com a versão mais alta e usa a biblioteca compartilhada nomeada eclipse_*dentro.

Use JDK6

O JDK6 agora é explicitamente necessário para ativar o Eclipse:

-Dosgi.requiredJavaVersion = 1.6

Esta questão SO relata uma incidência positiva para o desenvolvimento no Mac OS.


+ UnlockExperimentalVMOptions

As seguintes opções fazem parte de algumas das opções experimentais da Sun JVM.

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods

Eles foram relatados nesta postagem do blog para potencialmente acelerar o Eclipse.
Veja todas as opções da JVM aqui e também na página oficial de opções do Java Hotspot .
Nota: a lista detalhada desses relatórios de opções que UseFastAccessorMethodspodem estar ativos por padrão.

Consulte também "Atualize sua JVM" :

Como lembrete, o G1 é o novo coletor de lixo em preparação para o JDK 7, mas já usado no release da versão 6 do u17.


Abrindo arquivos no Eclipse a partir da linha de comandos

Veja a postagem do blog de Andrew Niefer relatando esta nova opção:

--launcher.defaultAction
openFile

Isso informa ao iniciador que se for chamado com uma linha de comando que contenha apenas argumentos que não começam com " -", esses argumentos deverão ser tratados como se seguissem " --launcher.openFile".

eclipse myFile.txt

Esse é o tipo de linha de comando que o iniciador receberá no Windows quando você clicar duas vezes em um arquivo associado ao eclipse ou selecionar arquivos e escolher " Open With" ou " Send To" Eclipse.

Os caminhos relativos serão resolvidos primeiro no diretório de trabalho atual e, segundo no diretório do programa eclipse.

Veja o bug 301033 para referência. Originalmente bug 4922 (outubro de 2001, corrigido 9 anos depois).


p2 e o prompt de diálogo não assinado

Se você está cansado desta caixa de diálogo durante a instalação de seus muitos plugins:

texto alternativo

, adicione seu eclipse.ini:

-Declipse.p2.unsignedPolicy=allow

Veja esta postagem do blog de Chris Aniszczy e o relatório de bug 235526 .

Eu quero dizer que a pesquisa de segurança apóia o fato de que menos prompts são melhores.
As pessoas ignoram as coisas que surgem no fluxo de algo que desejam realizar.

Para a 3.6, não devemos exibir avisos no meio do fluxo - não importa o quanto simplifiquemos, as pessoas simplesmente os ignoram.
Em vez disso, devemos coletar todos os problemas, não instalar esses pacotes com problemas e, em vez disso, levar o usuário de volta a um ponto no fluxo de trabalho em que eles podem consertar - adicione confiança, configure a política de segurança de maneira mais flexível etc. Isso é chamado de 'seguro' estadiamento ' .

---------- http://www.eclipse.org/home/categories/images/wiki.gif texto alternativo http://www.eclipse.org/home/categories/images/wiki.gif texto alternativo http://www.eclipse.org/home/categories/images/wiki.gif

Opções adicionais

Essas opções não estão diretamente nas opções eclipse.iniacima, mas podem ser úteis se necessário.


O problema do `user.home` no Windows7

Quando o eclipse é iniciado, ele lê seu arquivo de armazenamento de chaves (onde as senhas são mantidas), um arquivo localizado em user.home.
Se, por algum motivo, user.homenão se resolver adequadamente em um caminho completo, o Eclipse não será iniciado.
Inicialmente levantado nesta questão de SO , se você enfrentar isso, precisará redefinir o arquivo keystore para um caminho explícito (não há mais user.home para resolver no início)

Adicione no seu eclipse.ini:

-eclipse.keyring 
C:\eclipse\keyring.txt

Isso foi rastreado pelo bug 300577 , foi resolvido nesta outra questão do SO .


Modo de depuração

Aguarde, há mais de um arquivo de configuração no Eclipse.
se você adicionar à sua eclipse.iniopção:

-debug

, ative o modo de depuração e o Eclipse procurará outro arquivo de configuração: um .optionsarquivo em que você possa especificar algumas opções OSGI.
E isso é ótimo quando você adiciona novos plugins através da pasta dropins.
Adicione no seu arquivo .options as seguintes configurações, conforme descrito nesta postagem do blog " Diagnóstico de Dropins " :

org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true

O P2 informará quais pacotes foram encontrados na dropins/pasta, qual solicitação foi gerada e qual é o plano de instalação. Talvez não seja uma explicação detalhada do que realmente aconteceu e do que deu errado, mas deve fornecer informações importantes sobre por onde começar:

  • seu pacote estava no plano?
  • Foi um problema de instalação (falha P2)
  • ou talvez não seja ideal incluir seu recurso?

Isso vem do Bug 264924 - [reconciliador] Nenhum diagnóstico de problemas de dropins , que finalmente resolve o seguinte problema, como:

Unzip eclipse-SDK-3.5M5-win32.zip to ..../eclipse
Unzip mdt-ocl-SDK-1.3.0M5.zip to ..../eclipse/dropins/mdt-ocl-SDK-1.3.0M5

Essa é uma configuração problemática, pois o OCL depende do EMF que está faltando.
3.5M5 não fornece diagnóstico para esse problema.

Inicie o eclipse.
Sem problemas óbvios. Nada no log de erros.

  • Help / About / Plugindetalhes mostra org.eclipse.ocl.doc, mas não org.eclipse.ocl.
  • Help / About / Configurationdetalhes não tem menção (diagnóstica) de org.eclipse.ocl.
  • Help / Installation / Information Installed Softwarenão tem menção de org.eclipse.ocl.

Onde estão os bons marcadores de erro?


Caminho de classe do manifesto

Veja esta postagem do blog :

  • No Galileo (também conhecido como Eclipse 3.5), o JDT começou a resolver o caminho de classe do manifesto nas bibliotecas adicionadas ao caminho de construção do projeto. Isso funcionou se a biblioteca foi adicionada ao caminho de construção do projeto diretamente ou por meio de um contêiner de caminho de classe, como o recurso de biblioteca do usuário fornecido pelo JDT ou um implementado por terceiros.
  • No Helios, esse comportamento foi alterado para excluir contêineres do caminho de classe da resolução do caminho de classe manifesto.

Isso significa que alguns de seus projetos podem não ser mais compilados no Helios.
Se você deseja reverter para o comportamento do Galileo, adicione:

-DresolveReferencedLibrariesForContainers=true

Veja os erros 305037 , 313965 e 313890 para obter referências.


Pilha IPV4

Esta pergunta do SO menciona uma possível correção ao não acessar sites de atualização de plugins:

-Djava.net.preferIPv4Stack=true

Mencionado aqui para o caso de ajudar na sua configuração.


Otimizações potenciais de JVM1.7x64

Este artigo relata:

Para que conste, as opções mais rápidas que encontrei até agora para o meu teste de bancada com a JVM 1.7 x64 n Windows são:

-Xincgc 
-XX:-DontCompileHugeMethods 
-XX:MaxInlineSize=1024  
-XX:FreqInlineSize=1024 

Mas ainda estou trabalhando nisso ...


De acordo com este link, oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icms , você precisa de -XX: + UseConcMarkSweepGC para usar -XX: + CMSIncrementalMode. Isso está faltando no seu exemplo acima. Não precisaríamos do CMSIncrementalMode caso usássemos o G1 GC, estou certo?
RuntimeException 26/10/10

1
Ei, o G1GC é um desastre em um mac. Come a máquina inteira, exigindo uma reinicialização.
bmargulies

4
@VonC: -XX:CompileThreshold=5causa lentidão HORRENDOUS para mim. Livrar-me dessa opção reduziu meu tempo de inicialização do Eclipse para 17 segundos a partir de> 1 min !! Sem mencionar o quão terrivelmente lento o IDE era em geral. Veja este link
TrinitronX

3
@TrinitronX: (e na verdade todos), -XX:CompileThreshold=5é um valor muito baixo (padrão = 10000). Este valor representa o número de invocações / ramificações de método antes de compilá-lo. Um valor muito baixo fará com que o CodeCache seja preenchido prematuramente e o console poderá informar: CodeCache is full. Compiler has been disabled Quando o compilador for desativado, você perceberá lentidão no aplicativo. Há duas formas de corrigir isto, 1. Use -XX:CompileThreshold=1000(afinar este número) ou 2. Tente aumentar o tamanho do cache de código utilizando -XX:ReservedCodeCacheSize=64m(double do 32m padrão)
Drupad Panchal

4
para linux use /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.so para localização da jvm
r15habh

76

Configurações do Eclipse Galileo 3.5 e 3.5.1

Atualmente (novembro de 2009), estou testando com o jdk6 update 17 o seguinte conjunto de opções de configuração (com Galileo - eclipse 3.5.x, veja abaixo para 3.4 ou mais para Helios 3.6.x ):
(é claro, adapte os caminhos relativos presente neste eclipse.ini para os caminhos corretos para sua instalação)

Nota: para eclipse3.5 , substitua startupe launcher.librarylinhas por:

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

eclipse.ini 3.5.1

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/eclipse/mydropins

Veja também minha resposta original acima para obter mais informações.

Alterações (desde julho de 2009)

  • refere-se ao iniciador e não à estrutura
  • plugins compartilhados: org.eclipse.equinox.p2.reconciler.dropins.directoryopção.
  • O Galileo suporta caminhos totalmente relativos para área de trabalho ou VM (evite modificar aqueles de uma instalação do eclipse para outra, se, é claro, sua JVM e área de trabalho permanecerem iguais)
    Antes, esses caminhos relativos eram reescritos em absolutos quando o eclipse se lançava. ...
  • Você também pode copiar o diretório JRE de uma instalação Java JDK dentro do diretório eclipse

Ressalvas

Houve um erro com pontos de interrupção ignorados realmente relacionados ao JDK.
Use JDK6u16 ou mais recente para ativar o eclipse (Você pode definir quantos JDKs deseja compilar no eclipse: não é porque você lança um eclipse com o JDK6 que você precisará compilar com o mesmo JDK).

Máx.

Observe o uso de:

--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m

Conforme documentado no Wiki do Eclipse ,

Eclipse 3.3 suporta um novo argumento para o lançador: --launcher.XXMaxPermSize.
Se a VM que está sendo usada for uma Sun VM e ainda não houver um -XX:MaxPermSize=argumento de VM, o iniciador será adicionado automaticamente -XX:MaxPermSize=256mà lista de argumentos da VM que está sendo usada.
O lançador 3.3 é capaz apenas de identificar VMs da Sun no Windows.

Conforme detalhado nesta entrada :

Nem todos os vms aceitam o -XX:MaxPermSizeargumento e é por isso que ele é passado dessa maneira. Pode (ou não) existir problemas com a identificação de vms do sol.
Nota: O Eclipse 3.3.1 possui um erro em que o iniciador não pode detectar uma Sun VM e, portanto, não usa o tamanho correto do PermGen. Parece que este pode ter sido um bug conhecido no Mac OS X para 3.3.0 também.
Se você estiver usando uma dessas combinações de plataformas, adicione o -XXsinalizador ao eclipse.inidescrito acima.

Notas:

  • a 384mlinha " " é convertida na parte " =384m" do argumento da VM, se a VM faz distinção entre maiúsculas e minúsculas no " m", então o argumento também é esse.
  • o --launcher.prefixo " ", especifica que o argumento é consumido pelo próprio iniciador e foi adicionado aos argumentos específicos do iniciador para evitar colisões de nomes com argumentos do aplicativo. (Outros exemplos são --launcher.library, --launcher.suppressErrors)

A -vmargs -XX:MaxPermSize=384mparte é o argumento passado diretamente para a VM, ignorando completamente o iniciador e nenhuma verificação no fornecedor da VM é usada.


Eu tive alguns problemas com isso na versão mais recente do eclipse 3.5x64: --launcher.library plugins / org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519 - plugins de inicialização / org.eclipse.equinox.launcher_1 .0.200.v20090520.jar também tive que usar um jdk JAVA_HOME / bin / javaw, para o plugin m2eclipse. Caso contrário, isso é incrível demais.
22711 Nathan Feger

Esses dois não estão fazendo a mesma coisa? "--launcher.XXMaxPermSize 384m" e "-XX: MaxPermSize = 128m"
Igor Zinov'yev 10/11/2009

@Igor Zinov'yev: é um pouco redundante, mas ambos podem ser úteis, dependendo da plataforma e da versão do eclipse. Eu os redefinii para o mesmo valor e completei minha resposta com um pouco de documentação sobre essas configurações.
VonC 10/11/2009


Se você sempre deseja usar a melhor e mais recente VM, por que o argumento "-Dosgi.requiredJavaVersion = 1.5" não está usando 1.6?
Tony R

63

Configurações do Eclipse Ganymede 3.4.2


Para configurações mais recentes, consulte Configurações do Eclipse Galileo 3.5 acima .


JDK

A melhor configuração da JVM sempre , na minha opinião, inclui o JDK mais recente que você pode encontrar (por enquanto, jdk1.6.0_b07 até b16, exceto b14 e b15 )

eclipse.ini

Mesmo com essas configurações de pouca memória, eu posso executar grandes projetos java (junto com um servidor web) na minha área de trabalho antiga (2002) com 2Go RAM.

-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Dcom.sun.management.jmxremote

Ver resposta SO do GKelly e blog de Piotr Gabryanczyk para mais detalhes sobre as novas opções.

Monitoramento

Você também pode considerar iniciar:

C:\[jdk1.6.0_0x path]\bin\jconsole.exe

Como dito em uma pergunta anterior sobre consumo de memória .


1
o que é -Xssv2m para, quando eu incluí-lo no lançamento vm configurações eclipse costume, tinha um olhar para os documentos para definições de JVM, mas não conseguiu encontrá-lo
Craig Angus

Certo ... isso foi um erro de digitação: Xss2m, não Xssv2m: -Xss determina o tamanho da pilha: -Xss1024k. Se o espaço de pilha é muito pequeno, eventualmente, você vai ver um java.lang.StackOverflowError classe de exceção (a mensagem de erro mítico por aqui ;-))
VonC

Finalmente, comecei a usar o segundo conjunto de configurações e fiquei impressionado com o quão bem elas funcionam!
Craig Angus

Já tiveram a chance de usar as configurações por um tempo agora, o eclipse parece rápido, mas a construção de formigas parece mais lenta ???
Craig Angus

@ Craig Angus: estranho, qual versão do eclipse você está usando? E qual versão da formiga está incluída?
VonC 04/02/09

20

Configurações do Eclipse Indigo 3.7.2 (linux de 64 bits)

Configurações para a versão Java do Sun / Oracle "1.6.0_31" e Eclipse 3.7 em execução no Linux x86-64:

-nosplash
-vmargs
-Xincgc
-Xss500k
-Dosgi.requiredJavaVersion=1.6
-Xms64m
-Xmx200m
-XX:NewSize=8m
-XX:PermSize=80m
-XX:MaxPermSize=150m
-XX:MaxPermHeapExpansion=10m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseParNewGC
-XX:+CMSConcurrentMTEnabled
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=2
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=5
-XX:GCTimeRatio=49
-XX:MaxGCPauseMillis=20
-XX:GCPauseIntervalMillis=1000
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

Observe que isso usa apenas 200 MB para o heap e 150 MB para o não heap. Se você estiver usando plugins enormes, convém aumentar os limites "-Xmx200m" e "-XX: MaxPermSize = 150m".

O principal objetivo de otimização para esses sinalizadores é minimizar a latência em todos os casos e, como objetivo secundário de otimização, minimizar o uso de memória.


Funciona fantasticamente para mim (embora eu dobrou os valores para as configurações de memória relacionada, ainda é baixo e bolhas rápido!)
Aktau

Você tem os dois -XX: + UseConcMarkSweepGC e -XX: + UseParNewGC. Por quê? Eu não acho que você possa usar os dois coletores de lixo e não tenho certeza de qual finalmente será usado.
herman

Eu pensei que -XX: + UseConcMarkSweepGC é para coleta de lixo da geração antiga e -XX: + UseParNewGC é usado para coleta de lixo de eden.
Mikko Rantalainen


3
Cada opção e cada argumento para uma opção devem estar em sua própria linha.
27412 Josh Clemm

14

-showlocation

Para facilitar a execução do eclipse duas vezes e saber com qual espaço de trabalho você está lidando

O Eclipse 3.6 inclui uma opção de preferências para especificar o que mostrar, pelo Workspace name (shown in window title)qual funciona muito melhor do que -showlocationpor três motivos:

  1. Você não precisa reiniciar o eclipse para que ele tenha efeito.
  2. Você pode escolher um código curto.
  3. Aparece primeiro, antes do nome da perspectiva e do aplicativo.

9

Se você estiver usando a atualização 14 do jdk6, sugiro usar o coletor de lixo G1, que parece ajudar no desempenho.

Para fazer isso, remova essas configurações:

-XX: + UseConcMarkSweepGC
-XX: + CMSIncrementalMode
-XX: + CMSIncrementalPacing

e substitua-os por estes:

-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC


9

Se você estiver usando Linux + Sun JDK / JRE 32bits , altere "-vm" para:

-vm 
[your_jdk_folder]/jre/lib/i386/client/libjvm.so

Se você estiver usando Linux + Sun JDK / JRE 64bits , altere "-vm" para:

-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so

Isso está funcionando bem para mim no Ubuntu 8.10 e 9.04


É para ter o Eclipse usando um JDK como o ambiente padrão?
Thorbjørn Ravn Andersen

Isso pode ser usado para que o Eclipse use um JDK específico / diferente como o ambiente padrão.
Gilberto Olimpio 25/05

7

Você também pode tentar executar com JRockit . É uma JVM otimizada para servidores, mas muitos aplicativos clientes de longa duração, como os IDE, funcionam muito bem no JRockit. Eclipse não é exceção. O JRockit não possui um perm-space, portanto você não precisa configurá-lo.

É possível definir uma meta de tempo de pausa (ms) para evitar longas pausas de GC que impedem a interface do usuário.

-showsplash
org.eclipse.platform
-vm
 C:\jrmc-3.1.2-1.6.0\bin\javaw.exe 
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20

Normalmente, não me preocupo em definir -Xmx e -Xms e deixo o JRockit crescer o heap conforme necessário. Se você iniciar o aplicativo Eclipse com o JRockit, também poderá monitorar, criar um perfil e encontrar vazamentos de memória no aplicativo usando o conjunto de ferramentas JRockit Mission Control. Você baixa os plugins deste site de atualização . Observe que funciona apenas no Eclipse 3.3 e no Eclipse 3.4


Eu tenho eclipse correu em JRockit no passado e correu muito bem
Craig Angus

5

Aqui está minha própria configuração para o meu Eclipse rodando no laptop i7 2630M 16GB RAM, essa configuração está em uso há uma semana, sem uma única falha, e o Eclipse 3.7 está funcionando sem problemas.

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx4096m 
-XX:MaxPermSize=256m

Cálculos: Para Win 7 x64

  • Xms = Memória Física / 16
  • Xmx = Memória Física / 4
  • MaxPermSize = O mesmo que o valor padrão, que é 256m

Uau laptop 16G? Estou curioso. Isso é um System76? : D
Phil

5
-startup
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Dcom.sun.management.jmxremote
-Declipse.p2.unsignedPolicy=allow

E essas configurações funcionaram como um encanto para mim. Estou executando o OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24


Obrigado, isso ajudou bastante meu desempenho (configuração semelhante). Mas aumentei o tamanho máximo da pilha para 1024 MB.
22412 Jeff Evans

4

Minhas próprias configurações (Java 1.7, modifique para 1.6):

-vm
C:/Program Files (x86)/Java/jdk1.7.0/bin
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20100628
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.7
-Xmn100m
-Xss1m
-XgcPrio:deterministic
-XpauseTarget:20
-XX:PermSize=400M
-XX:MaxPermSize=500M
-XX:CompileThreshold=10
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+DoEscapeAnalysis
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+AggressiveOpts
-Xms512m
-Xmx512m

3

O Eclipse gosta de muita RAM. Use pelo menos -Xmx512M. Mais se disponível.



2

XX: + UseParallelGC que é a opção mais incrível de todos os tempos !!!


1

-vm
C: \ Arquivos de programas \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll

Para especificar qual versão do java você está usando e usar a dll em vez de iniciar um processo javaw


0

Aqui está o que eu uso (embora eu os tenha no atalho em vez do arquivo de configurações):

eclipse.exe -showlocation -vm "C: \ Java \ jdk1.6.0_07 \ bin \ javaw.exe" -vmargs -Xms256M -Xmx768M -XX: + UseParallelGC -XX: MaxPermSize = 128M

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.