Quais são as melhores configurações de JVM encontradas para executar o Eclipse?
Quais são as melhores configurações de JVM encontradas para executar o Eclipse?
Respostas:
É essa época do ano novamente: "eclipse.ini take 3" as configurações voltam!
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 )
AVISO : para plataformas não Windows, use a opção proprietária da Sun em -XX:MaxPermSize
vez 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.directory
a 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.
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: isSunVM
deve 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.exe
Sun 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:MaxPermSize
versão (porque não tenho idéia de quando todo mundo vai lançar o JDK certo ).
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:
org.eclipse.equinox.launcher
pacote com a versão mais alta.plugins
diretório o org.eclipse.equinox.launcher.[platform]
fragmento apropriado com a versão mais alta e usa a biblioteca compartilhada nomeada eclipse_*
dentro.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.
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 UseFastAccessorMethods
podem 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.
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).
Se você está cansado desta caixa de diálogo durante a instalação de seus muitos plugins:
, 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
Essas opções não estão diretamente nas opções eclipse.ini
acima, mas podem ser úteis se necessário.
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.home
nã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 .
Aguarde, há mais de um arquivo de configuração no Eclipse.
se você adicionar à sua eclipse.ini
opção:
-debug
, ative o modo de depuração e o Eclipse procurará outro arquivo de configuração: um .options
arquivo 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 / Plugin
detalhes mostraorg.eclipse.ocl.doc
, mas nãoorg.eclipse.ocl
.Help / About / Configuration
detalhes não tem menção (diagnóstica) deorg.eclipse.ocl
.Help / Installation / Information Installed Software
não tem menção deorg.eclipse.ocl
.Onde estão os bons marcadores de erro?
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.
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.
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 ...
-XX:CompileThreshold=5
causa 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
-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)
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 startup
e launcher.library
linhas 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
-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.
org.eclipse.equinox.p2.reconciler.dropins.directory
opção.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).
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:MaxPermSize
argumento 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-XX
sinalizador aoeclipse.ini
descrito acima.Notas:
- a
384m
linha " " é 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=384m
parte é o argumento passado diretamente para a VM, ignorando completamente o iniciador e nenhuma verificação no fornecedor da VM é usada.
Para configurações mais recentes, consulte Configurações do Eclipse Galileo 3.5 acima .
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 )
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.
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 .
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.
-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 -showlocation
por três motivos:
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
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
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
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
-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
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
Se você gosta de mim e teve problemas com a versão atual do Oracle 1.6, você pode atualizar seu JDK ou definir
-XX: MaxPermSize. Mais informações estão disponíveis aqui: http://java.dzone.com/articles/latest-java-update-fixes
XX: + UseParallelGC que é a opção mais incrível de todos os tempos !!!
-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
eclipse.ini
configurações novas e aprimoradas do Helios 3.6 estão aqui (abaixo, em uma nova resposta): stackoverflow.com/questions/142357/…