Speedup IntelliJ-Idea


92

ฉันใช้ intelliJ สำหรับการพัฒนา Scala และได้รับRAM ใหม่8 GBเมื่อสัปดาห์ที่แล้วดังนั้นฉันจึงคิดว่า: ถึงเวลาใช้งานแล้ว ฉันจะตรวจสอบการจัดการงานของฉันและพบ IntelliJ ใช้~ 250MB จากคราสฉันรู้ว่าการปรับแต่งตัวเลือก JVM ช่วยได้มากในการปรับปรุงความเร็วฉันจึง googled ...

และพบสิ่งนี้สำหรับ OS X ฉันไม่พบตัวเลือก JVM ในทันทีดังนั้นฉันจึงเริ่มปรับแต่งXmx ที่ 1 GB ฉันรู้ว่ามันไม่เริ่มต้นอีกต่อไป ฉันตรวจสอบเวอร์ชัน java intelliJ พบว่ามันล้าสมัยและ 32 บิต

ดังนั้นในการใช้ JDK และ64 บิตปัจจุบันของคุณคุณต้องเปลี่ยนลิงค์เป็น from:

IntelliJ IDEA Community Edition 10.0.2\bin\idea.exe

ถึง

IntelliJ IDEA Community Edition 10.0.2\bin\idea.BAT

และปรับ "เริ่มใน"

ค้างคาวมองหาJDK_HOMEและใช้ 64 บิตในขณะนี้

ตัวเลือก VMปัจจุบันของฉันซึ่งอยู่ใน

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

คือ

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

แทนที่จะ-XX:+UseParallelGCคุณสามารถใช้-XX:+UseConcMarkSweepGCซึ่งเป็น

ตัวเลือกที่ยอมรับสำหรับแอปเดสก์ท็อป แต่ฉันได้เปลี่ยนเป็นตัวรวบรวมปริมาณงานเมื่อเร็ว ๆ นี้ เนื่องจากด้วยเครื่องจักรที่รวดเร็วและฮีปที่เล็กพอคุณจึงหยุดได้อย่างรวดเร็วมีปริมาณงานมากขึ้นและไม่มีปัญหากับการแยกส่วน (ijuma.

การเปลี่ยนแปลง:

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

ตอนนี้ฉันจะยึดตัวเลือกเหล่านี้ไว้ ฉันอยากทราบประสบการณ์ของคุณกับมันจริงๆ

ตัวเลือกใดที่เหมาะกับคุณที่สุด ฉันจะซ่อนหน้าต่าง cmd นี้ได้อย่างไรในขณะที่เรียกใช้ intelliJ ผ่านทาง.bat? :)

โดยวิธีการที่นี่คือการเชื่อมโยงอีกจูน IntelliJ โดยทั่วไปจะบอกว่าในหน้า 20/21ให้ปิด windows restore และ antivirus สำหรับ system dirs

อีกวิธีหนึ่งในการเร่งความเร็ว intelliJ คือการใส่โฟลเดอร์ระบบ intellij บนramdrive (ขอบคุณ OlegYch | h)

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

ดูSuperuser สำหรับ Win 7 64bit RAM ไดรฟ์หรืออย่างใดอย่างหนึ่ง 1 GB ดูเหมือนจะดีสำหรับฉัน

คำแนะนำอีกอย่างที่เพื่อนให้ฉันคือการแยกไดเรกทอรีโครงการออกจากโปรแกรมป้องกันไวรัสของคุณ (สแกนเมื่อเข้าถึง)

มีโพสต์ที่คล้ายกันเกี่ยวกับการปรับแต่ง Eclipse:


6
หากรันเวอร์ชัน 64 บิตตัวเลือก VM จะอ่านได้จากidea64.exe.vmoptions
Arnaud P

ฉันเพิ่มคำถามที่คล้ายกัน แต่สำหรับระบบปฏิบัติการ 32 บิต (Windows 7) และ 3 GB RAM: IntelliJ IDEA 13.1 - วิธีป้องกันปัญหาหน่วยความจำเหลือน้อยในระบบปฏิบัติการ 32 บิต (Win 7) พร้อม RAM 3GB
krm

ทำไมไม่เรียกใช้ "idea64.exe" โดยตรงแทนที่จะเรียกใช้ผ่านไฟล์. bat (อย่างน้อยก็มี idea64.exe ใน IntelliJ idea 11 หรือไม่
jbarrameda

คำตอบ:


33

ชุดค่าผสมนี้ใช้งานได้ดีกับ Intellij13 ของฉันที่ทำงานใน Mavericks:

อัปเดตเมื่อวันที่ 18 กรกฎาคม 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

ฉันอัปเดตการตั้งค่านี้อยู่ที่https://github.com/adben/config/blob/master/idea64.vmoptions


3
คุณมี plent ของเลียนในการมี
Vach

3
ระวังคนนี้-XX:+UseCompressedStringsจากรายการของคุณสิ่งนี้ทำให้ฉันเสียหายส่วนที่เหลือทำงานได้
ตำหนิ

2
ขอบคุณ @adben ปรับปรุง IJ บนพีซีของฉันอย่างมาก แต่ผมมีการลบMaxMetaspaceSize, MetaspaceSize, UseCompressedStringsเพราะพวกเขาจะไม่ได้รับการสนับสนุนใน IJ 14 บน linux x86_64 UseCompressedOopsddin ก็ไม่ทำงานสำหรับฉันเช่นกัน คำแนะนำ: เรียกใช้ IJ จากบรรทัดคำสั่งเพื่อดูข้อความแสดงข้อผิดพลาดบน linux คือidea.sh
Mixaz

1
-XX: + UseCompressedStrings ทำลายมันให้ฉันด้วยในเวอร์ชัน Win8 x64 และ IDEA 64 บิต อย่างอื่นดูเหมือนจะโอเค
minorgod

หากต้องการแก้ไขไฟล์นี้ตั้งแต่แรกเพียงกดCtrl + Shift + Aสำหรับป๊อปอัปค้นหาการดำเนินการและพิมพ์ " แก้ไขตัวเลือก VM ที่กำหนดเอง " มันจะสร้างไฟล์ที่ถูกต้องสำหรับเครื่องของคุณโดยอัตโนมัติซึ่งคุณสามารถแก้ไขได้
Kevin Cooper

29

สำหรับฉันที่เปลี่ยนไปใช้ไดรฟ์ SSD ประสิทธิภาพดีขึ้นมาก (โดยเฉพาะสำหรับโครงการขนาดใหญ่)


ฉันกำลังจะได้มาตรฐานประสิทธิภาพ IJ กับ SSD และ HDD!
Gaurav

23

เมื่อไม่นานมานี้ฉันกำลังมองหาวิธีเร่งการรวบรวมโครงการของฉันและนั่นคือผลลัพธ์ นี่ไม่ใช่สำหรับ IntelliJ IDEA แต่จะช่วยได้มากเมื่อ (อีกครั้ง) สร้างโครงการขนาดใหญ่และฉันเดาว่ามันจะใช้ได้กับ IDE อื่น ๆ ด้วย นอกจากนี้ฉันยังอธิบายวิธีการของ Linux แต่ฉันแน่ใจว่า Windows มีการใช้งาน RAM-disk ของตัวเอง

วิธีที่ง่ายที่สุดในการเร่งความเร็วการคอมไพล์คือการย้ายเอาต์พุตการคอมไพล์ไปยังดิสก์ RAM

การตั้งค่าดิสก์ RAM

เปิด fstab

$ sudo gedit /etc/fstab

(แทนที่จะgeditใช้viหรืออะไรก็ได้ที่คุณต้องการ)

ตั้งค่าจุดเมาท์ดิสก์ RAM

ฉันใช้ดิสก์ RAM ในหลาย ๆ ที่ในระบบของฉันและหนึ่งในนั้นคือ/tmpดังนั้นฉันจะใส่เอาต์พุตการคอมไพล์ไว้ที่นั่น:

tmpfs /var/tmp tmpfs defaults 0 0

ในกรณีนี้ขนาดระบบไฟล์ของคุณจะไม่ถูก จำกัด แต่ก็โอเค/tmpขนาดของฉันตอนนี้คือ 73MB แต่ถ้าคุณกลัวว่าขนาดดิสก์ของ RAM จะใหญ่เกินไปคุณสามารถ จำกัด ขนาดได้เช่น:

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

การตั้งค่าโครงการ

ใน IntelliJ IDEA ให้เปิด Project Structure ( Ctrl+Alt+Shift+Sโดยค่าเริ่มต้น) จากนั้นไปที่ Project - 'Project compiler output' และย้ายไปที่ RAM disk mount point:

/tmp/projectName/out

(ฉันได้เพิ่มprojectNameโฟลเดอร์เพื่อให้ค้นหาได้ง่ายหากฉันต้องการไปที่นั่นหรือจะทำงานกับหลายโครงการในเวลาเดียวกัน)

จากนั้นไปที่โมดูลและในโมดูลทั้งหมดของคุณไปที่ Paths และเลือก 'สืบทอดเส้นทางเอาต์พุตการคอมไพล์ของโปรเจ็กต์' หรือหากคุณต้องการใช้เส้นทางเอาต์พุตคอมไพล์ที่กำหนดเองให้แก้ไข 'เส้นทางเอาต์พุต' และ 'ทดสอบเส้นทางผลลัพธ์' ตามที่คุณทำ เพื่อฉายเอาต์พุตคอมไพเลอร์ก่อน

นั่นคือทั้งหมดที่คน!

ป.ล. ตัวเลขไม่กี่: เวลาของการรวบรวมโครงการปัจจุบันของฉันในกรณีต่างๆ (โดยประมาณ):

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

PPS หากคุณใช้ดิสก์ SSD นอกจากการเร่งความเร็วในการคอมไพล์แล้วคุณจะลดการเขียนบนดิสก์ของคุณดังนั้นมันจะช่วยให้ SSD ของคุณมีชีวิตอย่างมีความสุขตลอดไป)


รามแก้ยิ่ง !! ไม่เพียง แต่เพื่อประสิทธิภาพ แต่ยังปกป้องอายุการใช้งาน SSD อีกด้วยขอบคุณ!
Mojtaba Asg

ฉันย้ายcachesและindexโฟลเดอร์ของฉันผ่านลิงก์สัญลักษณ์ไปยังดิสก์ RAM แคช Intellij IDEA ใน RAM Driveแนะนำวิธีอื่นในการดำเนินการโดยไม่มีลิงก์สัญลักษณ์อย่างไรก็ตามจะต้องใช้ดิสก์ RAM ขนาดใหญ่กว่าเนื่องจากคุณไม่สามารถระบุเฉพาะโฟลเดอร์แคชและดัชนีที่ ทาง. ไม่จำเป็นต้องพูดว่าการค้นหา / ค้นหา / คลิกสัญลักษณ์ใด ๆ เป็นแบบทันทีหรือเกือบจะทันทีในขณะนี้
ycomp

วิธีทำบน windows 10
Gaurav

@ycomp คุณช่วยอธิบายวิธีการทำอย่างละเอียดได้ไหม
SergioLeone

ฉันจำไม่ได้เป็นพิเศษ แต่อาจเป็นปัญหามากกว่าที่จะคุ้มค่า แม้ว่ามันจะชั่วร้ายอย่างรวดเร็ว ฉันจำไม่ได้ว่ามีปัญหาเฉพาะที่เกี่ยวข้องกับการทำเช่นนั้นหรือไม่ .. ฉันหยุดทำทันทีที่ย้ายไปใช้พีซีเครื่องอื่น
ycomp

20

เกี่ยวกับ:

ฉันจะซ่อนหน้าต่าง cmd นี้ในขณะที่เรียกใช้ intelliJ ผ่าน. bat ได้อย่างไร

ใช้คำสั่ง 'start' และ javaw.exe ร่วมกันดังนั้นหากคุณมี:

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

เปลี่ยนเป็น:

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

19

สิ่งที่มีประโยชน์มากที่สุดที่คุณสามารถทำเพื่อ IntelliJ คือการมีจำนวนมากของหน่วยความจำฟรีสำหรับดิสก์แคช IntelliJ บันทึกงานการประมวลผลจำนวนมากในไฟล์แคช วิธีนี้ใช้ได้ดีหากคุณมีหน่วยความจำว่างมาก แต่หากดิสก์แคชของคุณมี จำกัด คุณจะเห็นการหยุดชั่วคราวเป็นประจำและยาวนาน

ผมจะแนะนำมากกว่า-XX:+UseConcMarkSweepGCG1

ฉันยังทำสำเนาไฟล์ในเครื่องเพื่อลดความล่าช้าในการเข้าถึงไฟล์

BTW : สำหรับโครงการที่ฉันอยู่ฉันสังเกตเห็นความแตกต่างระหว่างการทำงานบนเครื่องที่มี 24 GB และอีกเครื่องที่มี 48 GB แม้ว่าฮีปสูงสุดจะตั้งไว้ที่ 2 GB ก็ตาม)


4
สำหรับฉันการรับรู้ที่สำคัญที่สุดคือเมื่อหยุดชั่วคราวไม่ได้เกิดจาก GC แต่ต้องอ่านข้อมูลใหม่จากดิสก์
Peter Lawrey

4
ความแตกต่างระหว่างเครื่อง 48GB และเครื่อง 24GB น่าจะเกิดจากการแคชระบบไฟล์ / ระบบปฏิบัติการโดยใช้แรมเสริม
cdeszaq

4

ฉันได้ทำบางการทดลองและพบว่าจะลดลง GC -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50หยุดการรวมกันดังต่อไปนี้ทำงานได้ดีที่สุด:

ฉันยังไม่ทำให้ฮีปใหญ่เกินไป 512 หรือเล็กกว่านั้นก็โอเคสำหรับฉัน มิฉะนั้นเมื่อ GC เต็มจะต้องเดินทั้งหมดซึ่งใช้เวลาพอสมควร


2

คุณสามารถค้นหาเคล็ดลับดีๆได้ที่นี่ ตัวอย่างเช่นความเร็วในการเปลี่ยนจาก IDEA ไปยังแอปอื่นและในทางกลับกันได้รับการปรับปรุงอย่างมีนัยสำคัญหลังจากปิดคุณสมบัติ "ปิดการซิงโครไนซ์ไฟล์"

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


2

ไม่แน่ใจว่าทำไมมันยังไม่ได้รับการกล่าวถึงเลย - คุณสามารถเปิดใช้งานPower Save modeซึ่งจะปิดหลายIJFiles Synchronizationกิจกรรมพื้นหลังรวมทั้ง บางบทความบอกว่าปิดการใช้งานการซิงค์ไฟล์ในตัวเลือกโครงสร้างโครงการได้ (เช่นบทความในคำตอบโดย @ OJ278) แต่ฉันไม่พบตัวเลือกนี้ในIJ 14แต่Power Save modeดูเหมือนจะปิดใช้งาน

ฉันมีฐานรหัสที่ค่อนข้างใหญ่ ( ซอร์สโค้ดAOSP ) ดังนั้นกิจกรรม HD เนื่องจากการซิงโครไนซ์ไฟล์พื้นหลังจึงน่ารำคาญ ...


1

คุณสามารถใช้ปลั๊กอินเครื่องมือเพิ่มประสิทธิภาพของ intellij:

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

ด้วยปลั๊กอินคุณสามารถ:

  • ปรับแต่งตัวเลือกเครื่องเสมือนอัตโนมัติ
  • ปิดการใช้งานการยืนยันคลาส
  • ล้างแคชของระบบ
  • กำหนดค่าเครื่องมือสร้างภายนอก
  • ตรวจสอบ Oracle JDK ล่าสุด
  • ข้ามการสร้างและปรับใช้ใหม่

โหวตลงทำไม? คำถามเกี่ยวกับการปรับแต่ง intellij และนี่คือวิธีแก้ปัญหา
iberck

2
น่าเศร้าที่ดูเหมือนว่าปลั๊กอินจะถูกดึงออกไป
nilo de roock

1

คำตอบที่ให้มาadbenมีประโยชน์มากในการปรับปรุงประสิทธิภาพในเครื่องของฉัน แม้ว่าฉันจะแก้ไขเล็กน้อยหลังจากอ่านบทความ 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

พวกเขาปรับปรุงประสิทธิภาพของโครงการขนาดใหญ่โดยใช้การกำหนดค่าข้างต้นและทำงานได้อย่างไม่มีที่ติสำหรับโครงการของเราด้วย สุดท้ายฉันปิดการใช้งานปลั๊กอินทั้งหมดที่ฉันจะไม่ใช้และนั่นก็ช่วยปรับปรุงสิ่งต่างๆเช่นกัน

อ้างอิง: https://dzone.com/articles/the-one-and-only-reason-to-customize-intellij-idea


0

ฉันใช้ชุดค่าผสมนี้และใช้งานได้ดีในสภาพแวดล้อมของฉัน

-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

อย่ารวม-XX:+UseParNewGCกับ CLion เวอร์ชันล่าสุด ตัวเลือกไม่ถูกต้อง
Sandu Liviu Catalin

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.