java - Speedup IntelliJ-Idea

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger intelliJ til Scala udvikling og fik 8 GB af nyt RAM i sidste uge, så jeg tænkte: tid til at bruge det. Jeg kontrollerede min task manager og fandt intelliJ ved hjælp af ~ 250mb . Fra eclipse vidste jeg, at tweaking JVM muligheder hjalp meget med at forbedre hastigheden, så jeg googlede ...


og fundet denne til OS X
Jeg kunne ikke finde JVM-indstillingen med det samme, så jeg begyndte at tweak Xmx. Ved 1 GB indså jeg, at det ikke starter mere. Jeg kontrollerede intelliJ java versionen, fandt den er forældet og 32bit. [33]


Så for at kunne bruge din nuværende JDK og 64 bit skal du ændre dit link til fra:


IntelliJ IDEA Community Edition 10.0.2inidea.exe


til


IntelliJ IDEA Community Edition 10.0.2inidea.BAT


og juster 'Start i'


Bat søger efter JDK\_HOME og bruger 64bit nu.


Mine nuværende VM-indstillinger , som er placeret i


...IntelliJ IDEA Community Edition 10.0.2inidea.exe.vmoptions


er


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


I stedet for -XX:+UseParallelGC kan du bruge -XX:+UseConcMarkSweepGC, hvilket er



  det accepterede valg til desktop apps,
  men jeg har ændret mig til gennemgangen
  kollektor for nylig. fordi med a
  hurtig maskine og en lille nok bunke,
  du har hurtige pauser, mere gennemstrømning
  og ingen problemer med fragmentering
  (ijuma. #scala)



Ændringer:


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


Jeg holder mig til disse muligheder for nu. Jeg vil virkelig gerne vide din erfaring med det.


Hvilke muligheder fungerer bedst for dig?
Hvordan gemmer jeg dette cmd-vindue, mens jeg kører intelliJ gennem .bat? :)



Forresten, her er et andet link til tuning intelliJ. I grunden står det på p.20/21 for at slukke for Windows-gendannelse og antivirus til system dirs. [34]


En anden måde at fremskynde intelliJ er at sætte intellij system mappe på ramdrive (tak OlegYch | h).


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


Se Superuser for Win 7 64bit RAM-drev eller denne.
1 GB virker fint for mig. [35] [36]


Et andet tip, som en ven gav mig, er at udelukke projektmapper fra dit antivirusprogram (scan på adgang)


Der er lignende indlæg vedrørende tuning Eclipse:



  • Eclipse Helios 3.6

  • Eclipse Juno 4.2

  • Angiv JVM for at starte Eclipse med


Bedste reference


Denne kombination fungerer fint på min Intellij13 løb i Mavericks:


Opdateret 18 juli, 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


Jeg holder denne indstilling opdateret på https://github.com/adben/config/blob/master/idea64.vmoptions[40]

Andre referencer 1


For mig at skifte til SSD-drev forbedret ydeevnen meget (især til store projekter).

Andre referencer 2


Vedrørende:



  Hvordan gemmer jeg dette cmd-vindue, mens jeg kører intelliJ gennem .bat?



Brug kommandoen 'start' og javaw.exe sammen, så hvis du har:


SET JAVA\_EXE=\%IDEA\_JDK\%jreinjava.exe
...
"\%JAVA\_EXE\%" \%JVM\_ARGS\% -cp "\%CLASS\_PATH\%" \%IDEA\_MAIN\_CLASS\_NAME\% \%*


skift det til:


SET JAVA\_EXE=\%IDEA\_JDK\%jreinjavaw.exe
...
start "Intellij IDEA" /b "\%JAVA\_EXE\%" \%JVM\_ARGS\% -cp "\%CLASS\_PATH\%" \%IDEA\_MAIN\_CLASS\_NAME\% \%*

Andre referencer 3


Det mest nyttige, du kan gøre for IntelliJ, er at have en masse ledig hukommelse til diskcaching . IntelliJ sparer meget af dets behandling i cachelagrede filer. Dette fungerer godt, hvis du har masser af ledig hukommelse, men hvis din diskcache er begrænset, vil du se regelmæssige, langvarige pauser.


Jeg vil foreslå -XX:+UseConcMarkSweepGC i stedet for G1.


Jeg arbejder også med lokale kopier af filer for at minimere filadgangsforsinkelsen.


BTW : Jeg har bemærket forskellen mellem at arbejde på en maskine med 24 GB og et med 48 GB, selv om den maksimale høje værdi er sat til 2 GB;)

Andre referencer 4


For en tid siden var jeg på udkig efter mulighederne for at fremskynde mit projekts kompilering, og det er resultatet. Dette er ikke til IntelliJ IDEA selv, men det hjælper meget, når (re) bygger et stort projekt, og jeg tror det vil fungere med også andre IDE'er. Jeg beskrev også Linux-tilgang, men jeg er sikker på, at Windows har det egne RAM-disk implementeringer.


Den nemmeste måde at speedup kompilering er at flytte compilation output til RAM disk.


Opsætning af RAM-disk



Åbn fstab



$ sudo gedit /etc/fstab


(i stedet for gedit kan du bruge vi eller hvad du vil)


Konfigurer RAM-diskmonteringspunkt



Jeg bruger RAM-diske flere steder i mit system, og en af ​​dem er /tmp, så jeg vil bare lægge min kompilere output der:


tmpfs /var/tmp tmpfs defaults 0 0


I så fald er din filsystemstørrelse ikke begrænset, men det er ok, min /tmp størrelse er lige nu 73 MB. Men hvis du er bange for, at RAM-diskstørrelsen bliver for stor - du kan begrænse den s størrelse, f.eks:


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


Projektopsætning



I IntelliJ IDEA skal du åbne projektstruktur (Ctrl+Alt+Shift+S som standard, og derefter gå til Project - 'Project compiler output' og flytte det til RAM disk mount point:


/tmp/projectName/out


(Jeg har tilføjet projectName mappe for at finde det nemt, hvis jeg har brug for at komme derhen eller vil arbejde sammen med flere projekter på samme tid)


Derefter skal du gå til moduler, og i alle dine moduler skal du gå til stier og vælge 'Inherit project compile output path' eller, hvis du vil bruge brugerdefineret kompilere output path, skal du ændre 'Output path' og 'Test output path' som du gjorde det til at projicere compiler output før.


Det var alt folkens!


P. S. Et par tal: tidspunktet for min nuværende projektsamling i forskellige tilfælde (ca.):


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


P.P.S. Hvis du bruger SSD-disk, vil du foruden kompileringshastigheden reducere skriveoperationer på din disk, så det hjælper også din SSD til at leve lykkeligt nogensinde efter;)

Andre referencer 5


Jeg har gjort nogle eksperimenter, og fandt ud af, at for at mindske GC pauser, fungerer følgende kombination bedst: -XX: + UseConcMarkSweepGC -XX: SoftRefLRUPolicyMSPerMB=50.


Jeg vil heller ikke gøre bunken for stor, 512 eller endnu mindre er OK for mig. Ellers vil det være nødvendigt, at GC skal gå alt sammen, hvilket tager lidt tid.

Andre referencer 6


Du kan finde gode tips her. For eksempel blev hastigheden af ​​at skifte fra IDEA til en anden app og omvendt signifikant forbedret, efter at funktionen 'Sluk for synkronisering af filer' er slået fra.


http://hamletdarcy.blogspot.com/2008/02/10-tips-to-increase-intellij-idea.html[41]

Andre referencer 7


Ikke sikker på hvorfor det endnu ikke er nævnt - du kan aktivere Power Save mode, som slukker for mange IJ baggrundsaktiviteter, herunder Files Synchronization. Nogle artikler siger, at det er muligt at deaktivere Synkronisering af filer i projektstrukturoptioner (som artiklen svarede ved @ OJ278), men jeg kunne ikke finde denne indstilling i IJ 14 , men Power Save mode synes at deaktivere den.


Jeg har en ret stor kodebase ( AOSP kildekode), så HD-aktivitet på grund af synkronisering af baggrundsfiler er irriterende ...

Andre referencer 8


Du kan bruge plugin'et til intellijets optimizer:


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


Med plugin kan du:



  • Automatisk indstilling af virtuelle maskinindstillinger

  • Deaktiver klasseverifikation

  • Ryd systemkufferne op

  • Konfigurer eksterne byggeværktøjer

  • Valider den nyeste Oracle JDK

  • Spring over bygg og omfordel


Andre referencer 9


Jeg brugte denne kombination, og det virker fint i mit miljø


-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

Andre referencer 10


Svaret fra adben er meget nyttigt for at forbedre ydeevnen i min maskine. Selvom jeg lidt overskredet det efter at have læst en Dzone-artikel,


-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


De forbedrede udførelsen af ​​store projekter ved at bruge ovenstående konfiguration og fungerer også uden problemer for vores projekter. Endelig har jeg deaktiveret alle de plugins, jeg ikke vil bruge, og det forbedrer også tingene.


Reference: https://dzone.com/articles/the-one-and-only-reason-to-ustomize-intellij-idea [43]