การตั้งค่า JVM ที่ดีที่สุดสำหรับ Eclipse คืออะไร [ปิด]


315

การตั้งค่า JVM ที่ดีที่สุดที่คุณพบเมื่อใช้ Eclipse คืออะไร


8
การeclipse.iniตั้งค่าใหม่และปรับปรุงสำหรับ Helios 3.6 อยู่ที่นี่ (ด้านล่างในคำตอบใหม่): stackoverflow.com/questions/142357/…
VonC

6
เป็นที่น่าอัศจรรย์ว่าคำถามปิดเป็นไม่สร้างสรรค์ได้เช่นคะแนนสูง ...
bancer

1
คำถามนี้ถูกถามเมื่อคำตอบล่าสุดคำถามเช่นนี้ในปี 2008 เป็นeclipsezone.com/eclipse/forums/t20732.html ชุดคำตอบเพิ่มขึ้นเนื่องจาก eclipse และ java เวอร์ชันใหม่เปิดตัวแล้วการอัปเดตครั้งต่อ ๆ มาจะทำให้คำตอบใหม่อยู่เสมอ การปิดคำถามจะทำให้คำตอบไม่มั่นคง วิธีเดียวที่ฉันสามารถคิดว่าจะใช้ถ้อยคำใหม่คำถามนี้จะทำให้เฉพาะรุ่นซึ่งฉันคิดว่าจะแย่ลงเพราะมันจะทำให้หลายคำถามที่จะตอบโดยทั่วไปปัญหาเดียวกัน
Craig Angus

10
เห็นด้วย - คำถามปิดเช่นนี้เป็นบ้า - บ้าฉันบอกคุณ - คำถามเช่นนี้มีประโยชน์มากที่สุดและน่าสนใจในเว็บไซต์!
Luigi Plinge

3
จากเหตุผลของการปิด "เราคาดหวังว่าคำตอบจะเกี่ยวข้องกับข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญเฉพาะด้าน" ฉันคิดว่าการปิดคำถามนี้ยืดออกไป ขอให้เราระมัดระวังในการใช้พลังการเซ็นเซอร์ ฉันจะบอกว่าในกรณีที่มีข้อสงสัยมันจะดีกว่าที่จะ "ให้ความรู้เป็นอิสระ" และเปิด
luiscolorado

คำตอบ:


315

มันเป็นช่วงเวลาของปีอีกครั้ง: "eclipse.ini ใช้เวลา 3" การตั้งค่ากลับมาแล้ว!

การตั้งค่า Eclipse Helios 3.6 และ 3.6.x

alt text http://www.eclipse.org/home/promotions/friends-helios/helios.png

หลังจากการตั้งค่าสำหรับEclipse Ganymede 3.4.xและEclipse Galileo 3.5.xนี่คือการดูในเชิงลึกที่ไฟล์" eclipse.ini " การตั้งค่าที่ดีที่สุดสำหรับ Eclipse Helios 3.6.x:

  • ขึ้นอยู่กับตัวเลือกรันไทม์ ,
  • และการใช้ดวงอาทิตย์ของ Oracle JVM 1.6u21 B7 , กรกฏาคม 27 (ตัวเลือกบางอย่างที่เป็นกรรมสิทธิ์ของซันอาจเกี่ยวข้อง)

( โดย "ปรับให้เหมาะสม" ฉันหมายถึงสามารถเรียกใช้ Eclipse แบบเต็มรูปแบบบนเวิร์คสเตชั่นเร็ว ๆ นี้ที่ทำงาน P4 เก่าบางรุ่นจากปี 2002 ด้วย 2Go RAM และ XPSp3 แต่ฉันได้ทดสอบการตั้งค่าเดียวกันเหล่านี้บน Windows7 แล้ว )

eclipse.ini

ข้อความแสดงแทน

คำเตือน : สำหรับ Windows ที่ไม่ใช่แพลตฟอร์มใช้ดวงอาทิตย์ตัวเลือกที่เป็นกรรมสิทธิ์แทนของคราสตัวเลือกที่เป็นกรรมสิทธิ์-XX:MaxPermSize นั่นคือ: ยกเว้นว่าคุณกำลังใช้jdk6u21 build 7ล่าสุด ดูส่วน Oracle ด้านล่าง--launcher.XXMaxPermSize

-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

หมายเหตุ:
ปรับตัวp2.reconciler.dropins.directoryเข้ากับไดเรกทอรีภายนอกที่คุณเลือก
ดูคำตอบ SOนี้ แนวคิดคือสามารถวางปลั๊กอินใหม่ในไดเร็กทอรีได้อย่างอิสระจากการติดตั้ง Eclipse

ส่วนต่อไปนี้แสดงรายละเอียดสิ่งที่อยู่ในeclipse.iniไฟล์นี้


Oracle JVM 1.6u21 ที่หวั่น (รุ่นก่อนหน้า 7) และ Eclipse ขัดข้อง

Andrew Nieferเตือนฉันถึงสถานการณ์นี้และเขียนโพสต์บล็อกเกี่ยวกับอาร์กิวเมนต์ vm ที่ไม่ได้มาตรฐาน ( -XX:MaxPermSize) และอาจทำให้ vms จากผู้ขายรายอื่นไม่สามารถเริ่มต้นได้เลย
แต่เวอร์ชัน eclipse ของตัวเลือกนั้น ( --launcher.XXMaxPermSize) ไม่ทำงานกับ JDK ใหม่ (6u21 ยกเว้นคุณใช้ 6u21 build 7 ดูด้านล่าง)

สุดท้ายโซลูชันอยู่ในEclipse Wikiและสำหรับ Helios บน Windows ด้วย 6u21 pre build 7เท่านั้น:

  • ดาวน์โหลดeclipse_1308.dllถาวร (16 กรกฎาคม 2010)
  • และวางลงใน
(eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503

แค่นั้นแหละ. ไม่มีการตั้งค่าที่จะปรับแต่งที่นี่ (อีกครั้งเฉพาะสำหรับ Helios บน Windowsด้วย6u21 pre build 7 )
สำหรับแพลตฟอร์มที่ไม่ใช่ Windows -XX:MaxPermSizeคุณจะต้องย้อนกลับไปยังดวงอาทิตย์ตัวเลือกที่เป็นกรรมสิทธิ์

ปัญหานี้เกิดจากการถดถอย: การระบุ JVM ล้มเหลวเนื่องจาก Oracle rebranding ใน java.exeและข้อผิดพลาดทริกเกอร์319514บน Eclipse
แอนดรูว์ดูแลBug 320005 - [ตัวเรียกใช้] --launcher.XXMaxPermSize: isSunVMควรกลับมาจริงสำหรับ Oracleแต่นั่นจะเป็นเพียง Helios 3.6.1 เท่านั้น
ฟรานซิสอัพตันอีกคราส committer, สะท้อนให้เห็นถึงสถานการณ์ทั้งหมด

ปรับปรุง u21b7, กรกฎาคม, 27 :
ออราเคิลได้ถดถอยเปลี่ยนแปลงสำหรับ Java 6 รุ่นถัดไปและจะไม่ใช้มันอีกครั้งจนกว่า JDK 7
หากคุณใช้jdk6u21 บิลด์ 7คุณสามารถเปลี่ยนกลับเป็น--launcher.XXMaxPermSize(ตัวเลือก eclipse) แทน-XX:MaxPermSize(ตัวเลือกที่ไม่ได้มาตรฐาน)
การตรวจจับอัตโนมัติที่เกิดขึ้นในตัวเรียกใช้งาน C shimeclipse.exeจะยังคงมองหาSun Microsystemsสตริง "" แต่ด้วย 6u21b7 ตอนนี้มันจะใช้ได้ - อีกครั้ง

สำหรับตอนนี้ฉันยังคงรักษา-XX:MaxPermSizeเวอร์ชันไว้ (เพราะฉันไม่รู้ว่าเมื่อไหร่ที่ทุกคนจะเริ่มใช้JDK ที่ถูกต้อง )


นัย `-startup` และ` --launcher.library`

ตรงกันข้ามกับการตั้งค่าก่อนหน้านี้พา ธ ที่แน่นอนสำหรับโมดูลเหล่านั้นไม่ได้ตั้งค่าอีกต่อไปซึ่งสะดวกเนื่องจากสามารถแตกต่างกันระหว่าง Eclipse 3.6.x รุ่นต่างๆ:

  • เริ่มต้น: หากไม่ได้ระบุไฟล์ปฏิบัติการจะค้นหาในไดเรกทอรีปลั๊กอินสำหรับorg.eclipse.equinox.launcherบันเดิลที่มีเวอร์ชันสูงสุด
  • launcher.library: หากไม่ได้ระบุไฟล์ที่เรียกทำงานจะค้นหาในpluginsไดเร็กทอรีสำหรับorg.eclipse.equinox.launcher.[platform]แฟรกเมนต์ที่เหมาะสมกับเวอร์ชันสูงสุดและใช้ไลบรารีแบบแบ่งใช้ที่มีชื่อeclipse_*อยู่ภายใน

ใช้ JDK6

ตอนนี้ JDK6 ต้องการการเปิดใช้ Eclipse อย่างชัดเจน:

-Dosgi.requiredJavaVersion = 1.6

คำถาม SOนี้รายงานอุบัติการณ์เชิงบวกสำหรับการพัฒนาบน Mac OS


+ UnlockExperimentalVMOptions

ตัวเลือกต่อไปนี้เป็นส่วนหนึ่งของตัวเลือกการทดลองบางอย่างของ Sun JVM

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

มีการรายงานในบล็อกโพสต์นี้เพื่อเร่งความเร็ว Eclipse
ดูทุกตัวเลือก JVM ที่นี่และยังอยู่ในอย่างเป็นทางการJava Hotspot ตัวเลือกหน้า
หมายเหตุ: รายการโดยละเอียดของตัวเลือกเหล่านั้นรายงานที่UseFastAccessorMethodsอาจใช้งานโดยค่าเริ่มต้น

ดูเพิ่มเติมที่"อัพเดต JVM ของคุณ" :

เพื่อเป็นตัวเตือน G1 เป็นตัวรวบรวมขยะใหม่ในการเตรียมการสำหรับ JDK 7 แต่ได้ใช้ในรีลีสเวอร์ชัน 6 จาก u17 แล้ว


การเปิดไฟล์ใน Eclipse จากบรรทัดคำสั่ง

ดูโพสต์บล็อกจาก Andrew Niefer รายงานตัวเลือกใหม่นี้:

--launcher.defaultAction
openFile

สิ่งนี้จะบอกตัวเรียกใช้งานว่าหากถูกเรียกด้วยบรรทัดคำสั่งที่มีเพียงอาร์กิวเมนต์ที่ไม่ได้ขึ้นต้นด้วย " -" ดังนั้นอาร์กิวเมนต์เหล่านั้นควรได้รับการปฏิบัติเสมือนว่าพวกเขาทำตาม " --launcher.openFile"

eclipse myFile.txt

นี่คือประเภทบรรทัดคำสั่งที่ตัวเรียกใช้งานจะได้รับบน windows เมื่อคุณดับเบิลคลิกไฟล์ที่เกี่ยวข้องกับ eclipse หรือคุณเลือกไฟล์และเลือก " Open With" หรือ " Send To" Eclipse

เส้นทางสัมพัทธ์จะได้รับการแก้ไขก่อนกับไดเรกทอรีการทำงานปัจจุบันและที่สองกับไดเรกทอรีโปรแกรม eclipse

ดูข้อผิดพลาด 301033สำหรับการอ้างอิง ข้อผิดพลาดเริ่มแรกที่4922 (ตุลาคม 2544, แก้ไข 9 ปีต่อมา)


p2 และพรอมต์โต้ตอบที่ไม่ได้ลงนาม

หากคุณเบื่อกับกล่องโต้ตอบนี้ระหว่างการติดตั้งปลั๊กอินหลายตัว:

ข้อความแสดงแทน

เพิ่มในของคุณeclipse.ini:

-Declipse.p2.unsignedPolicy=allow

เห็นนี้โพสต์บล็อกจากคริส Aniszczyและรายงานข้อผิดพลาด 235526

ฉันต้องการจะบอกว่าการวิจัยด้านความปลอดภัยสนับสนุนความจริงที่ว่าพรอมต์ที่น้อยกว่านั้นดีกว่า
ผู้คนไม่สนใจสิ่งต่าง ๆ ที่ปรากฏขึ้นในสิ่งที่ต้องการทำ

สำหรับ 3.6 เราไม่ควรแสดงคำเตือนในระหว่างการไหล - ไม่ว่าเราจะลดความซับซ้อนลงเพียงใดก็ตามผู้คนจะไม่สนใจพวกเขา
แต่เราควรเก็บปัญหาทั้งหมดที่ไม่ได้ติดตั้งการรวมกลุ่มผู้ที่มีปัญหาและแทนที่จะนำกลับมาใช้จุดในเวิร์กโฟลว์ที่พวกเขาสามารถ fixup - เพิ่มความไว้วางใจนโยบายการรักษาความปลอดภัยการกำหนดค่าขึ้นอย่างอิสระ ฯลฯ นี้เรียกว่า'ปลอดภัย การแสดงละคร'

---------- http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif

ตัวเลือกเพิ่มเติม

ตัวเลือกเหล่านั้นไม่ได้อยู่ในeclipse.iniข้างต้นโดยตรงแต่อาจมีประโยชน์ถ้าจำเป็น


ปัญหา `user.home 'ใน Windows7

เมื่อคราสเริ่มต้นมันจะอ่านไฟล์ที่เก็บคีย์ (ที่รหัสผ่านจะถูกเก็บไว้) user.homeไฟล์ที่อยู่ใน
หากด้วยเหตุผลบางอย่างที่user.homeไม่สามารถแก้ไขตัวเองอย่างถูกต้องกับเส้นทางแบบเต็ม Eclipse จะไม่เริ่มทำงาน
เริ่มแรกแล้วในคำถาม SO นี้หากคุณพบสิ่งนี้คุณต้องกำหนดไฟล์ที่เก็บคีย์ใหม่ให้เป็นพา ธ ที่ชัดเจน (ไม่มีผู้ใช้อีกต่อไปที่จะแก้ไขเมื่อเริ่มต้น)

เพิ่มในของคุณeclipse.ini:

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

นี้ได้รับการติดตามโดยข้อผิดพลาด 300577มันได้รับการแก้ไขในคำถาม SO อื่น ๆนี้


แก้ไขข้อบกพร่องโหมด

รอมีไฟล์การตั้งค่ามากกว่าหนึ่งไฟล์ใน Eclipse
ถ้าคุณเพิ่มeclipse.iniในตัวเลือกของคุณ:

-debug

คุณเปิดใช้งานโหมดแก้ไขข้อบกพร่องและ Eclipse จะค้นหาไฟล์การตั้งค่าอื่น : .optionsไฟล์ที่คุณสามารถระบุตัวเลือก OSGI บางตัวได้
และเป็นสิ่งที่ยอดเยี่ยมเมื่อคุณเพิ่มปลั๊กอินใหม่ผ่านโฟลเดอร์ดรอป
เพิ่มไฟล์. options ของคุณในการตั้งค่าต่อไปนี้ตามที่อธิบายไว้ในโพสต์บล็อกนี้" การวินิจฉัย Dropins " :

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

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

  • เป็นชุดของคุณในแผนหรือไม่
  • มันเป็นปัญหาการติดตั้ง (ความผิด P2)
  • หรืออาจจะเป็นการดีที่สุดที่จะรวมคุณสมบัติของคุณ

ที่มาจากBug 264924 - [reconciler] ไม่มีการวินิจฉัยปัญหา Dropinsซึ่งในที่สุดก็แก้ปัญหาดังต่อไปนี้:

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

นี่คือการกำหนดค่าที่มีปัญหาเนื่องจาก OCL ขึ้นอยู่กับ EMF ที่ขาดหายไป
3.5M5 ไม่มีการวินิจฉัยปัญหานี้

เริ่มคราส
ไม่มีปัญหาชัดเจน ไม่มีสิ่งใดในบันทึกข้อผิดพลาด

  • Help / About / Pluginรายละเอียดการแสดงแต่ไม่org.eclipse.ocl.docorg.eclipse.ocl
  • Help / About / Configurationรายละเอียดยังไม่มี (วินิจฉัย) org.eclipse.oclเอ่ยถึง
  • Help / Installation / Information Installed Softwareorg.eclipse.oclมีการกล่าวถึงไม่มี

เครื่องหมายข้อผิดพลาดที่ดีอยู่ที่ไหน


Manifest Classpath

ดูโพสต์บล็อกนี้:

  • ใน Galileo (aka Eclipse 3.5) JDT เริ่มแก้ไข classpath ชัดแจ้งในไลบรารีที่เพิ่มเข้ากับเส้นทางการสร้างของโครงการ สิ่งนี้ทำงานได้ไม่ว่าจะเป็นการเพิ่มไลบรารีในเส้นทางการสร้างของโครงการโดยตรงหรือผ่านคอนเทนเนอร์ classpath เช่นสิ่งอำนวยความสะดวกไลบรารีผู้ใช้ที่จัดทำโดย JDT หรือสิ่งที่ดำเนินการโดยบุคคลที่สาม
  • ใน Helios พฤติกรรมนี้ถูกเปลี่ยนเพื่อไม่รวมคอนเทนเนอร์คลาสพา ธ จากการแก้ปัญหาคลาสพา ธ ที่ชัดแจ้ง

นั่นหมายความว่าบางโครงการของคุณอาจไม่ได้รวบรวมใน Helios อีกต่อไป
หากคุณต้องการเปลี่ยนกลับเป็นพฤติกรรมกาลิเลโอให้เพิ่ม:

-DresolveReferencedLibrariesForContainers=true

ดูข้อผิดพลาด 305037 , ข้อผิดพลาด 313965และข้อผิดพลาด 313890สำหรับการอ้างอิง


IPV4 สแต็ก

คำถาม SOนี้กล่าวถึงการแก้ไขที่อาจเกิดขึ้นเมื่อไม่สามารถเข้าถึงไซต์อัปเดตปลั๊กอิน:

-Djava.net.preferIPv4Stack=true

พูดถึงที่นี่ในกรณีที่มันสามารถช่วยในการกำหนดค่าของคุณ


JVM1.7x64 การปรับให้เหมาะสมที่อาจเกิดขึ้น

รายงานบทความนี้ :

สำหรับเร็กคอร์ดตัวเลือกที่เร็วที่สุดที่ฉันได้พบในการทดสอบ bench ของฉันด้วย 1.7 x64 JVM n Windows คือ:

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

แต่ฉันยังคงทำงานกับมัน ...


ตามลิงค์นี้oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icmsคุณต้องมี -XX: + UseConcMarkSweepGC เพื่อใช้ -XX: + CMSIncrementalMode ที่หายไปจากตัวอย่างของคุณด้านบน เราไม่ต้องการ CMSIncrementalMode ในกรณีที่เราใช้ G1 GC ใช่ไหม?
RuntimeException

1
เฮ้ G1GC เป็นหายนะบนเครื่องแม็ค มันกินเครื่องทั้งหมดซึ่งต้องรีบูต
bmargulies

4
@VonC : -XX:CompileThreshold=5ทำให้เกิดการลดลงอย่างมากสำหรับฉัน การกำจัดตัวเลือกนี้เพียงอย่างเดียวลดเวลาเริ่มต้น Eclipse ลงเหลือ 17 วินาทีจาก> 1 นาที !! ไม่ต้องพูดถึงว่า IDE นั้นช้ามากเพียงใด ดูลิงค์นี้
TrinitronX

3
@TrinitronX: (และทุกคนจริง ๆ ) -XX:CompileThreshold=5เป็นค่าที่ต่ำมาก (ค่าเริ่มต้น = 10,000) ค่านี้แสดงถึงจำนวนการเรียกใช้เมธอด / สาขาก่อนรวบรวม ค่าต่ำเกินไปจะทำให้ CodeCache ของคุณเต็มก่อนกำหนดและคอนโซลอาจรายงาน: CodeCache is full. Compiler has been disabled เมื่อคอมไพเลอร์ถูกปิดใช้งานคุณจะสังเกตเห็นความช้าในแอป มีสองวิธีในการแก้ไขปัญหานี้คือ 1. ใช้-XX:CompileThreshold=1000(ปรับตัวเลขนี้อย่างละเอียด) หรือ 2. ลองเพิ่มขนาดแคชโค้ดโดยใช้-XX:ReservedCodeCacheSize=64m(สองเท่าจากค่าเริ่มต้น 32m)
Drupad Panchal

4
สำหรับการใช้งานลินุกซ์/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.soสำหรับสถานที่ตั้ง JVM
r15habh

76

การตั้งค่า Eclipse Galileo 3.5 และ 3.5.1

ปัจจุบัน (พฤศจิกายน 2009) ฉันกำลังทดสอบด้วย jdk6 อัปเดต 17 ชุดตัวเลือกการกำหนดค่าต่อไปนี้ (ด้วย Galileo - eclipse 3.5.x ดูด้านล่างสำหรับ 3.4หรือสูงกว่าสำหรับHelios 3.6.x ):
(แน่นอนปรับเส้นทางที่สัมพันธ์กัน ปรากฏใน eclipse.ini นี้ไปยังเส้นทางที่ถูกต้องสำหรับการตั้งค่าของคุณ)

หมายเหตุ: สำหรับeclipse3.5แทนที่startupและlauncher.libraryบรรทัดโดย:

-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

ดูคำตอบต้นฉบับของฉันด้านบนสำหรับข้อมูลเพิ่มเติม

การเปลี่ยนแปลง (จากกรกฎาคม 2009)

  • อ้างถึงตัวเรียกใช้และไม่ใช่เฟรมเวิร์ก
  • ปลั๊กอินที่ใช้ร่วมกัน: org.eclipse.equinox.p2.reconciler.dropins.directoryตัวเลือก
  • กาลิเลโอรองรับพา ธ ที่สัมพันธ์กันอย่างสมบูรณ์สำหรับเวิร์กสเปซหรือ VM (หลีกเลี่ยงการแก้ไขสิ่งเหล่านั้นจากการติดตั้ง eclipse หนึ่งไปยังอีกหากแน่นอน JVM และพื้นที่ทำงานของคุณยังคงเหมือนเดิม)
    ก่อนหน้านั้นเส้นทางสัมพัทธ์เหล่านั้น ...
  • คุณยังสามารถคัดลอกไดเร็กทอรี JRE ของการติดตั้ง Java JDK ภายในไดเร็กทอรี eclipse ของคุณ

คำเตือน

มีข้อผิดพลาดที่มีเบรกพอยต์ที่ถูกละเว้นจริง ๆ แล้วเกี่ยวข้องกับ JDK
ใช้ JDK6u16 ขึ้นไปเพื่อเปิด eclipse (จากนั้นคุณสามารถกำหนด JDK ได้มากเท่าที่คุณต้องการคอมไพล์ภายใน eclipse: ไม่ใช่เพราะคุณเรียกใช้ eclipse ด้วย JDK6 ที่คุณจะต้องคอมไพล์ด้วย JDK เดียวกันนั้น)

แม็กซ์

บันทึกการใช้งานของ:

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

ในฐานะที่เป็นบันทึกไว้ในEclipse วิกิพีเดีย ,

Eclipse 3.3 --launcher.XXMaxPermSizeสนับสนุนการโต้เถียงครั้งใหม่ที่จะปล่อยไปนี้:
หาก VM ที่ใช้เป็น Sun VM และยังไม่มี-XX:MaxPermSize=อาร์กิวเมนต์ VM ดังนั้นตัวเรียกใช้งานจะเพิ่มลง-XX:MaxPermSize=256mในรายการของอาร์กิวเมนต์ VM ที่ถูกใช้โดยอัตโนมัติ
3.3 launcher นั้นสามารถระบุ Sun VM บน Windows ได้เท่านั้น

ตามรายละเอียดในรายการนี้ :

ไม่ใช่ vms ทั้งหมดที่ยอมรับการ-XX:MaxPermSizeโต้แย้งซึ่งเป็นเหตุผลว่าทำไมมันถูกส่งผ่านในลักษณะนี้ อาจมี (หรืออาจไม่) มีปัญหากับการระบุ sun vms
หมายเหตุ: Eclipse 3.3.1 มีข้อผิดพลาดที่ตัวเรียกใช้ไม่สามารถตรวจพบ Sun VM ได้ดังนั้นจึงไม่ใช้ขนาด PermGen ที่ถูกต้อง ดูเหมือนว่านี่อาจเป็นจุดบกพร่องที่รู้จักใน Mac OS X มาเป็นเวลา 3.3.0เช่นกัน
หากคุณใช้ทั้งสองแพลตฟอร์มเหล่านี้ให้เพิ่มการ-XXตั้งค่าสถานะไปที่eclipse.iniตามที่อธิบายไว้ข้างต้น

หมายเหตุ:

  • ว่า " 384mสาย" แปลว่า "การ=384m" เป็นส่วนหนึ่งของการโต้แย้ง VM ถ้า VM เป็นกรณีที่สำคัญเกี่ยวกับ " m" จากนั้นจึงเป็นเรื่องนี้
  • "การ--launcher." คำนำหน้าระบุว่าอาร์กิวเมนต์ที่ถูกบริโภคโดยปล่อยตัวเองและถูกบันทึกอยู่ในข้อโต้แย้งที่เฉพาะเจาะจงปล่อยเพื่อหลีกเลี่ยงการชนชื่อแอพลิเคชันที่มีการขัดแย้ง (มีตัวอย่างอื่น--launcher.library, --launcher.suppressErrors)

-vmargs -XX:MaxPermSize=384mส่วนหนึ่งคือการโต้แย้งผ่านโดยตรงกับ VM, อ้อมปล่อยทั้งหมดและตรวจสอบไม่เกี่ยวกับผู้ขาย VM ถูกนำมาใช้


ฉันมีปัญหาสองสามข้อสำหรับการเปิดตัว eclipse 3.5x64 ล่าสุด: --launcher.library ปลั๊กอิน / org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519 -startup plugin / org.eclipse.equinox.launcher_1 .0.200.v20090520.jar นอกจากนี้ฉันต้องใช้ jdk JAVA_HOME / bin / javaw สำหรับปลั๊กอิน m2eclipse ไม่อย่างนั้นมันสุดยอดมาก
นาธาน Feger

สองคนนี้ไม่ได้ทำสิ่งเดียวกันหรือ "--launcher.XXMaxPermSize 384m" และ "-XX: MaxPermSize = 128m"
Igor Zinov'yev

@Igor Zinov'yev: มันเป็นบิตซ้ำซ้อน แต่ทั้งคู่อาจมีประโยชน์ขึ้นอยู่กับแพลตฟอร์มและเวอร์ชันคราส ฉันรีเซ็ตพวกเขาเป็นค่าเดียวกันและตอบคำถามด้วยเอกสารประกอบเล็กน้อยเกี่ยวกับการตั้งค่าเหล่านั้น
VonC


หากคุณต้องการใช้ VM ล่าสุดและยิ่งใหญ่ที่สุดอยู่เสมอเหตุใดจึงไม่มีอาร์กิวเมนต์ "-Dosgi.requiredJavaVersion = 1.5" โดยใช้ 1.6?
Tony R

63

Eclipse Ganymede 3.4.2 การตั้งค่า


สำหรับการตั้งค่าล่าสุดเพิ่มเติมโปรดดูที่คราสกาลิเลโอ 3.5 การตั้งค่าดังกล่าวข้างต้น


JDK

การตั้งค่า JVM ที่ดีที่สุดเสมอในความคิดของฉันรวมถึงJDK ล่าสุดที่คุณสามารถหาได้ (ดังนั้นตอนนี้ jdk1.6.0_b07 สูงถึง b16 ยกเว้น b14 และ b15 )

eclipse.ini

แม้จะมีการตั้งค่าหน่วยความจำที่ค่อนข้างต่ำฉันยังสามารถรันโปรเจ็กต์ java ขนาดใหญ่ (พร้อมกับเว็บเซิร์ฟเวอร์) บนเดสก์ท็อปเก่า (2002) ด้วย 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

ดูคำตอบ SO ของ GKellyและบล็อกของ Piotr Gabryanczykสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกใหม่

การตรวจสอบ

คุณสามารถลองเปิดตัว:

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

ตามที่กล่าวในคำถามก่อนหน้านี้เกี่ยวกับการใช้หน่วยความจำ


1
สิ่งที่เป็น -Xssv2m สำหรับเมื่อฉันรวมไว้ในการเปิดตัว VM ตั้งค่าคราสเคยชินได้ดูเอกสารสำหรับการตั้งค่า JVM แต่ไม่สามารถหาได้
เครกแองกัส

ใช่ ... นั่นเป็นตัวพิมพ์ผิด: Xss2m ไม่ใช่ Xssv2m: -Xss กำหนดขนาดของกองซ้อน: -Xss1024k หากพื้นที่สแต็กมีขนาดเล็กเกินไปในที่สุดคุณจะเห็นคลาสข้อยกเว้น java.lang.StackOverflowError (ข้อความแสดงข้อผิดพลาดเกี่ยวกับที่นี่ ;-))
VonC

ในที่สุดก็กลับมาใช้การตั้งค่าชุดที่สองและประหลาดใจว่ามันทำงานได้ดีแค่ไหน!
Craig Angus

มีโอกาสที่จะใช้การตั้งค่าในขณะนี้คราสดูเหมือนจะเร็ว แต่การทำ ant builds ดูเหมือนจะช้าลงไหม ???
Craig Angus

@ Craig Angus: แปลกคุณกำลังใช้ eclipse รุ่นใด? และเวอร์ชั่นมดตัวใดที่รวมอยู่ในนั้น?
VonC

20

การตั้งค่า Eclipse Indigo 3.7.2 (ลินุกซ์ 64 บิต)

การตั้งค่าสำหรับSun / Oracle Javaเวอร์ชัน "1.6.0_31" และEclipse 3.7ทำงานบน x86-64 Linux:

-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

โปรดทราบว่าสิ่งนี้ใช้เพียง 200 MB สำหรับฮีปและ 150 MB สำหรับฮีปที่ไม่ใช่ หากคุณใช้ปลั๊กอินขนาดใหญ่คุณอาจต้องการเพิ่มขีด จำกัด "-Xmx200m" และ "-XX: MaxPermSize = 150m"

เป้าหมายการปรับให้เหมาะสมหลักสำหรับแฟล็กเหล่านี้คือการลดเวลาแฝงให้เหลือน้อยที่สุดในทุกกรณีและเป้าหมายการปรับให้เหมาะสมลำดับที่สองลดการใช้หน่วยความจำ


ทำงานได้อย่างยอดเยี่ยมสำหรับฉัน (แม้ว่าฉันจะเพิ่มค่าสองเท่าสำหรับการตั้งค่าที่เกี่ยวข้องกับหน่วยความจำ แต่ก็ยังต่ำและพองเร็ว!)
Aktau

คุณมีทั้ง -XX: + UseConcMarkSweepGC และ -XX: + UseParNewGC ทำไม? ฉันไม่คิดว่าคุณสามารถใช้ทั้งนักสะสมขยะและฉันไม่แน่ใจว่าจะใช้อันไหน
เฮอร์แมน

ฉันคิดว่า -XX: + UseConcMarkSweepGC ใช้สำหรับการรวบรวมขยะในรุ่นเก่าและ -XX: + UseParNewGC ใช้สำหรับการรวบรวมขยะ eden
Mikko Rantalainen

ดูเพิ่มเติมที่: blogs.oracle.com/jonthecollector/entry/our_collectors
Mikko Rantalainen

3
แต่ละตัวเลือกและแต่ละอาร์กิวเมนต์ของตัวเลือกต้องอยู่ในบรรทัดของตัวเอง
Josh Clemm

14

-showlocation

เพื่อให้ง่ายขึ้นในการทำให้ eclipse ทำงานสองครั้งและรู้ว่าพื้นที่ทำงานที่คุณกำลังทำ

Eclipse 3.6 เพิ่มตัวเลือกการตั้งค่าเพื่อระบุสิ่งที่จะแสดงWorkspace name (shown in window title)ซึ่งทำงานได้ดีกว่า-showlocationด้วยเหตุผลสามประการ:

  1. คุณไม่จำเป็นต้องรีสตาร์ท eclipse เพื่อให้มีผล
  2. คุณสามารถเลือกรหัสย่อ
  3. มันจะปรากฏขึ้นก่อนหน้าเปอร์สเปคทีฟและชื่อแอปพลิเคชัน

9

หากคุณกำลังจะไปกับการอัปเดต jdk6 14 ฉันขอแนะนำให้ใช้ตัวเก็บขยะ G1 ซึ่งดูเหมือนว่าจะช่วยให้ประสิทธิภาพ

หากต้องการทำเช่นนั้นให้ลบการตั้งค่าเหล่านี้:

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

และแทนที่ด้วยสิ่งเหล่านี้:

-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC


9

หากคุณใช้ Linux + Sun JDK / JRE 32bitsให้เปลี่ยน "-vm" เป็น:

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

หากคุณใช้ Linux + Sun JDK / JRE 64bitsให้เปลี่ยน "-vm" เป็น:

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

มันใช้งานได้ดีสำหรับฉันบน Ubuntu 8.10 และ 9.04


นี่เป็นสิ่งที่ทำให้ Eclipse ใช้ JDK เป็นสภาพแวดล้อมเริ่มต้นหรือไม่
Thorbjørn Ravn Andersen

สิ่งนี้สามารถใช้เพื่อให้ Eclipse ใช้ JDK เฉพาะ / แตกต่างกันเป็นสภาพแวดล้อมเริ่มต้น
Gilberto Olimpio

7

คุณสามารถลองรันด้วย JRockit มันเป็น JVM ที่ปรับให้เหมาะกับเซิร์ฟเวอร์ แต่แอปพลิเคชันไคลเอนต์ที่ใช้งานมานานจำนวนมากเช่น IDE's ทำงานได้ดีบน JRockit Eclipse จะไม่มีข้อยกเว้น JRockit ไม่มีพื้นที่เหลือดังนั้นคุณไม่จำเป็นต้องกำหนดค่า

เป็นไปได้ที่จะกำหนดเป้าหมายหยุดชั่วคราว (ms) เพื่อหลีกเลี่ยง gc ที่หยุดชั่วคราวที่ค้างอยู่ใน UI

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

ฉันมักจะไม่รำคาญการตั้งค่า -Xmx และ -Xms และปล่อยให้ JRockit เพิ่มจำนวนฮีปตามที่เห็นจำเป็น หากคุณเปิดใช้งานแอปพลิเคชัน Eclipse ด้วย JRockit คุณสามารถตรวจสอบโปรไฟล์และค้นหาหน่วยความจำรั่วในแอปพลิเคชันของคุณโดยใช้ชุดเครื่องมือ JRockit Mission Control คุณดาวน์โหลดปลั๊กอินจากไซต์อัพเดตนี้ หมายเหตุใช้ได้กับ Eclipse 3.3 และ Eclipse 3.4 เท่านั้น


ฉันมีคราสวิ่งบน JRockit ในอดีตที่ผ่านมาและวิ่งได้เป็นอย่างดี
เครกแองกัส

5

นี่คือการตั้งค่าของฉันเองสำหรับ Eclipse ที่ทำงานบนแล็ปท็อป i7 2630M 16GB RAM การตั้งค่านี้ใช้มานานหนึ่งสัปดาห์โดยไม่ต้องหยุดทำงานเพียงครั้งเดียวและ Eclipse 3.7 ทำงานได้อย่างราบรื่น

-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

การคำนวณ: สำหรับ Win 7 x64

  • Xms = หน่วยความจำกายภาพ / 16
  • Xmx = หน่วยความจำกายภาพ / 4
  • MaxPermSize = เหมือนกับค่าเริ่มต้นซึ่งคือ 256m

แล็ปท็อปว้าว 16G? ฉันอยากรู้. นั่นคือ 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

และการตั้งค่าเหล่านี้ได้ผลเช่นเดียวกับฉัน ฉันใช้ OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24


ขอบคุณสิ่งนี้ช่วยให้ประสิทธิภาพของฉันดีขึ้นเล็กน้อย (การตั้งค่าที่คล้ายกัน) แต่ฉันเพิ่มขนาดฮีปสูงสุดเป็น 1024MB
Jeff Evans

4

การตั้งค่าของฉันเอง (Java 1.7, แก้ไขสำหรับ 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



2

XX: + UseParallelGC นั่นเป็นตัวเลือกที่ยอดเยี่ยมที่สุดที่เคย !!!


1

-vm
C: \ Program Files \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll

หากต้องการระบุเวอร์ชัน Java ที่คุณใช้และใช้ dll แทนการเปิดใช้กระบวนการ javaw


0

นี่คือสิ่งที่ฉันใช้ (แม้ว่าฉันมีไว้ในทางลัดแทนที่จะเป็นไฟล์การตั้งค่า):

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

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