Speedup IntelliJ-Idea

92

Estou usando o intelliJ para o desenvolvimento do Scala e ganhei 8 GB de RAM nova semana passada, então pensei: hora de usá-lo. Eu verifiquei meu gerenciador de tarefas e encontrei o intelliJ usando ~ 250 MB . Desde o eclipse, eu sabia que ajustar as opções da JVM ajudou muito a melhorar a velocidade, então pesquisei ...

e encontrei este para OS X, não consegui encontrar a opção JVM imediatamente, então comecei a ajustar o Xmx. Com 1 GB, percebi que ele não inicia mais. Eu verifiquei a versão java do intelliJ, descobri que está desatualizada e de 32 bits.

Portanto, para usar seu JDK atual e 64 bits, você deve alterar seu link para de:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

para

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

e ajuste "Começar em"

O morcego procura JDK_HOMEe usa 64 bits agora.

Minhas opções atuais de VM , que estão localizadas em

...\IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe.vmoptions

estão

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m
-ea
-server
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+UnlockExperimentalVMOptions
-XX:+UseParallelGC

Em vez de -XX:+UseParallelGC, você pode usar -XX:+UseConcMarkSweepGC, que é

a escolha aceita para aplicativos de desktop, mas eu mudei para o coletor de taxa de transferência recentemente. porque com uma máquina rápida e um heap pequeno o suficiente, você tem pausas rápidas, mais rendimento e nenhum problema de fragmentação (ijuma. #scala)

Alterar:

-XX:+UseConcMarkSweepGC //removed
// removed, because not needed with the lastest JVM.
    -XX:+UnlockExperimentalVMOptions
    -XX:+DoEscapeAnalysis
    -XX:+UseCompressedOops

Vou ficar com essas opções por enquanto. Eu realmente gostaria de saber sua experiência com ele.

Quais opções funcionam melhor para você? Como oculto esta janela cmd enquanto executo o intelliJ através do .bat? :)

A propósito, aqui está outro link para ajustar o intelliJ . Basicamente, diz na p.20 / 21 para desligar o Windows Restore e antivírus para dirs do sistema.

Outra maneira de acelerar o intelliJ é colocar a pasta do sistema intellij no ramdrive (obrigado OlegYch | h).

from idea.properties 
idea.system.path=${idea.home}/.IntelliJIdea/system

Consulte Superusuário para Win 7 64bit RAM Drive ou este . 1 GB parece bom para mim.

Outra dica que um amigo me deu é excluir os diretórios do projeto do seu antivírus (varredura ao acessar)

Existem postagens semelhantes sobre como ajustar o Eclipse:

Stefan K.
fonte
6
Se a versão de 64 bits for executada, as opções da VM serão lidas deidea64.exe.vmoptions
Arnaud P
Eu adicionei uma pergunta semelhante, mas para um sistema operacional de 32 bits (Windows 7) e 3 GB de RAM: IntelliJ IDEA 13.1 - como evitar problemas de pouca memória em um sistema operacional de 32 bits (Win 7) com 3 GB de RAM
krm
Por que não executar "idea64.exe" diretamente, em vez de por meio do arquivo .bat? (pelo menos há idea64.exe no IntelliJ idea 11?
jbarrameda

Respostas:

32

Esta combinação funciona muito bem no meu Intellij13 rodando em Mavericks:

Atualizado em 18 de julho de 2017 :

# custom IntelliJ IDEA VM options

-ea
-server
-Xms2G
-Xmx4096M
-Xss2m
-XX:MaxMetaspaceSize=2G
-XX:ReservedCodeCacheSize=1G
-XX:MetaspaceSize=512m
-XX:+UseConcMarkSweepGC
-XX:+DoEscapeAnalysis
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:+UnlockExperimentalVMOptions
-Djava.net.preferIPv4Stack=true
-Dsun.io.useCanonCaches=false
-XX:LargePageSizeInBytes=256m
-XX:+UseCodeCacheFlushing
-XX:ParallelGCThreads=8
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+PrintGCDetails
-XX:+PrintFlagsFinal
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=60
-XX:+CMSClassUnloadingEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+UseAdaptiveGCBoundary
-XX:+UseSplitVerifier
-XX:CompileThreshold=10000
-XX:+OptimizeStringConcat
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UnlockDiagnosticVMOptions
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseCompressedOops
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd

-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine

Eu mantenho essa configuração atualizada em https://github.com/adben/config/blob/master/idea64.vmoptions

adben
fonte
3
você tem plent de duplicações lá
Vach
3
cuidado com esse aqui -XX:+UseCompressedStrings, de todos da sua lista, isso quebrou pra mim, o resto funcionou.
blamb
2
Obrigado @adben, o IJ melhorou muito no meu PC. Mas eu tinha que remover MaxMetaspaceSize, MetaspaceSize, UseCompressedStringsporque eles não são suportados no IJ 14 no Linux x86_64. UseCompressedOopsnão funciona para mim também. Dica: execute IJ na linha de comando para ver as mensagens de erro, no linux éidea.sh
Mixaz de
1
-XX: + UseCompressedStrings quebrou para mim também no Win8 x64 e na versão IDEA de 64 bits. Tudo o resto parece bem.
minorgod
Para editar esse arquivo em primeiro lugar, simplesmente pressione Ctrl + Shift + A para o pop-up Localizar ação e digite " Editar opções de VM personalizadas ". Ele criará automaticamente o arquivo correto para sua máquina que você pode editar.
Kevin Cooper
28

Para mim, mudar para um drive SSD melhorou muito o desempenho (especialmente para grandes projetos).

Yann Cébron
fonte
Definitivamente vou avaliar o desempenho do IJ com SSD e um HDD!
Gaurav
22

Há algum tempo atrás estava procurando maneiras de acelerar a compilação do meu projeto e pronto. Isso não é para o IntelliJ IDEA em si, mas ajudará muito na (re) construção de grandes projetos e, eu acho, funcionará com quaisquer outros IDEs também. Além disso, descrevi a abordagem do Linux, mas tenho certeza que o Windows tem suas próprias implementações de disco RAM.

A maneira mais fácil de acelerar a compilação é mover a saída da compilação para o disco RAM.

Configuração do disco RAM

Abrir fstab

$ sudo gedit /etc/fstab

(em vez de geditvocê pode usar viou o que quiser)

Configure o ponto de montagem do disco RAM

Estou usando discos RAM em vários lugares do meu sistema e um deles está /tmp, então colocarei minha saída de compilação lá:

tmpfs /var/tmp tmpfs defaults 0 0

Neste caso, o tamanho do seu sistema de arquivos não será limitado, mas está tudo bem, meu /tmptamanho agora é 73 MB. Mas se você tem medo que o tamanho do disco RAM fique muito grande - você pode limitar o tamanho, por exemplo:

tmpfs /var/tmp tmpfs defaults,size=512M 0 0

Configuração do projeto

No IntelliJ IDEA, abra a Estrutura do projeto ( Ctrl+Alt+Shift+Spor padrão), vá para Projeto - 'Saída do compilador do projeto' e mova-o para o ponto de montagem do disco RAM:

/tmp/projectName/out

(Eu adicionei uma projectNamepasta para encontrá-la facilmente se precisar chegar lá ou se for trabalhar com vários projetos ao mesmo tempo)

Então, vá para Módulos, e em todos os seus módulos vá para Caminhos e selecione 'Herdar caminho de saída de compilação do projeto' ou, se você quiser usar caminho de saída de compilação personalizado, modifique 'Caminho de saída' e 'Caminho de saída de teste' da maneira que você fez para projetar a saída do compilador antes.

Isso é tudo, pessoal!

PS Alguns números: tempo de compilação do meu projeto atual em casos diferentes (aproximadamente):

HDD:     80s
SSD:     30s
SSD+RAM: 20s

PPS Se você usar um disco SSD, além de acelerar a compilação, você reduzirá as operações de gravação em seu disco, então também ajudará seu SSD a viver feliz para sempre;)

tio lem
fonte
A solução Ram é ótima !! não apenas pelo desempenho, mas também pela proteção do tempo de vida do SSD. obrigado!
Mojtaba Asg
Mudei minhas pastas cachese indexvia link simbólico para um disco RAM, o cache Intellij IDEA em RAM Drive sugere outra maneira de fazer isso sem links simbólicos, no entanto, seria necessário um disco RAM maior porque você não pode especificar apenas os caches e pastas de índice que maneira. Desnecessário dizer que qualquer pesquisa / consulta / clique em um símbolo é instantânea ou quase instantânea agora
ycomp
Como fazer isso no windows 10?
Gaurav,
@ycomp, você poderia explicar como fazer isso?
SergioLeone
Não consigo me lembrar especificamente, mas provavelmente é mais problema do que vale a pena. Embora tenha sido muito rápido. Não me lembro se houve algum problema específico associado a isso. Parei de fazer isso depois de migrar para outro PC
ycomp
20

A respeito de:

Como oculto esta janela cmd enquanto executo o intelliJ através do .bat?

Use o comando 'start' e javaw.exe juntos, então, se você tiver:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\java.exe
...
"%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*

mude para:

SET JAVA_EXE=%IDEA_JDK%\jre\bin\javaw.exe
...
start "Intellij IDEA" /b "%JAVA_EXE%" %JVM_ARGS% -cp "%CLASS_PATH%" %IDEA_MAIN_CLASS_NAME% %*
Dilum Ranatunga
fonte
19

A coisa mais útil que você pode fazer pelo IntelliJ é ter muita memória livre para o cache de disco . O IntelliJ salva muito do seu trabalho de processamento em arquivos em cache. Isso funciona bem se você tiver muita memória livre, mas se o cache de disco for limitado, você verá pausas regulares e duradouras.

Eu sugeriria em -XX:+UseConcMarkSweepGCvez de G1.

Também trabalho cópias locais de arquivos para minimizar o atraso no acesso aos arquivos.

BTW : para o projeto em que estou, percebi a diferença entre trabalhar em uma máquina com 24 GB e outra com 48 GB, embora o heap máximo esteja definido como 2 GB;)

Peter Lawrey
fonte
4
Para mim, a constatação mais importante é que quando ele faz uma pausa, não é devido ao GC, mas sim ter que reler os dados do disco.
Peter Lawrey
3
A diferença entre uma máquina de 48 GB e uma máquina de 24 GB é provavelmente devido ao cache do sistema de arquivos / nível do SO usando a memória RAM extra.
cdeszaq de
4

Eu fiz algumas experiências e descobriu que para diminuir GC pausa a seguinte combinação funciona melhor: -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50.

Eu também não faria o heap muito grande, 512 ou ainda menor está OK para mim. Caso contrário, quando estiver cheio, o CG terá que percorrer todo o trajeto, o que leva algum tempo.

Peter Gromov
fonte
2

Não tenho certeza por que não foi mencionado ainda - você pode ativar Power Save mode, o que desativa muitas atividades de segundo plano do IJ , incluindoFiles Synchronization . Alguns artigos dizem que é possível desabilitar o Files Sync nas opções de estrutura do projeto (como o artigo na resposta de @ OJ278), mas não consegui encontrar essa opção no IJ 14 , masPower Save mode parece que a desabilitei.

Eu tenho uma base de código bastante grande ( código-fonte AOSP ), então a atividade de HD devido à sincronização de arquivos em segundo plano é irritante ...

Mixaz
fonte
1

Você pode usar o plug-in otimizador do intellij:

https://zeroturnaround.com/free/optimizer-for-intellij-idea/

Com o plugin, você pode:

  • Opções de ajuste automático da máquina virtual
  • Desativar verificação de classe
  • Limpe os caches do sistema
  • Configurar ferramentas de construção externas
  • Valide o Oracle JDK mais recente
  • Pular compilar e reimplantar
iberck
fonte
Por que votar? a questão é sobre como ajustar o intellij e esta é uma solução
iberck
2
Infelizmente, o plugin parece ter sido retirado.
nilo de roock,
1

A resposta fornecida por adbené muito útil para melhorar o desempenho da minha máquina. Embora eu o tenha modificado ligeiramente depois de ler um artigo do Dzone

-server
-Xms2g
-Xmx2g
-XX:NewRatio=3
-Xss16m
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:ConcGCThreads=4
-XX:ReservedCodeCacheSize=240m
-XX:+AlwaysPreTouch
-XX:+TieredCompilation
-XX:+UseCompressedOops
-XX:SoftRefLRUPolicyMSPerMB=50
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-ea

Eles melhoraram o desempenho de grandes projetos usando a configuração acima e funcionam perfeitamente para nossos projetos também. Por último, desativei todos os plug-ins que não vou usar e isso também melhora as coisas.

Referência: https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea

Chaklader Asfak Arefe
fonte
0

Usei essa combinação e está funcionando bem no meu ambiente

-server
-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+UseParNewGC
-XX:ParallelGCThreads=4
-XX:MaxTenuringThreshold=1
-XX:SurvivorRatio=8
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
-XX:+CMSClassUnloadingEnabled
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=65
-XX:+CMSScavengeBeforeRemark
-XX:+UseCMSInitiatingOccupancyOnly
-XX:ReservedCodeCacheSize=64m
-XX:-TraceClassUnloading
-ea
-Dsun.io.useCanonCaches=false
Yasir Shabbir Choudhary
fonte
Não inclua -XX:+UseParNewGCnas versões recentes do CLion. Opção inválida.
Sandu Liviu Catalin