ไม่สามารถเรียกใช้ dex: GC เกินขีด จำกัด โอเวอร์เฮดใน Eclipse


213

เมื่อฉันดาวน์โหลดโครงการ Git OsmAndและไปรวบรวม Eclipse จะส่งคืนข้อผิดพลาดเหล่านี้:

[Dex Loader] Unable to execute dex: GC overhead limit exceeded
[OsmAnd]     Conversion to Dalvik format failed: 
             Unable to execute dex: GC overhead limit exceeded

Google และ Stackoverflow บอกว่าผมต้องเปลี่ยนใน -Xms40m -Xmx384m แปลงให้เป็นรูปแบบ Dalvik ล้มเหลว: ไม่สามารถที่จะดำเนินการ Dex: Java พื้นที่กอง ฉันล้างโปรเจ็กต์และรีสตาร์ท Eclipse แต่ไม่ช่วยeclipse.ini

ฉันพบลิงค์นี้: คำแนะนำสำหรับนักพัฒนา Android:“ การแปลงเป็นรูปแบบ Dalvik ล้มเหลว: ไม่สามารถดำเนินการ dex: null” แต่ฉันไม่ทราบว่า.jarจะเปลี่ยนอินพุตจากโครงการของฉันจากโครงการของฉันหากใครสามารถช่วยฉันส่งโครงการไปยัง พวกเขา

คำตอบ:


437

สามารถแก้ไขได้โดยการเปลี่ยนค่า VM ใน Eclipse.ini ตั้งค่าเป็น 512 และ 1024 ดังนี้:

openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m

พื้นที่ที่เปลี่ยนแปลงในภาพ ป้อนคำอธิบายรูปภาพที่นี่


8
ขอบคุณ ฉันสงสัยว่าเหตุใดค่าเริ่มต้นจึงยังไม่เพียงพอฉันไม่คิดว่าจะมีผู้ใช้ eclipse ที่น้อยกว่า 512/1024 - ฉันเพิ่งไปถึงสองครั้ง นอกจากนี้ฉันหวังว่าการตั้งค่าจะถูกเก็บไว้ในไฟล์ปรับแต่งบางอย่างในโฮมไดเร็กตอรี่ของฉันแทนที่จะเป็นไฟล์ ini ที่เขียนทับด้วยการอัพเกรดทุกครั้ง
Yashima

11
คุณต้องการ--launcher.XXMaxPermSize 512mสองครั้งหรือไม่?
Andrew Wyld

4
ข้อ จำกัด ของตัวเลขเหล่านี้คืออะไร? ฉันควรพิจารณาวางไว้สูงแค่ไหน?
easycheese

5
@MuhammadRiyaz มันขึ้นอยู่กับระบบปฏิบัติการของคุณและไม่ว่าคุณจะใช้ JVM แบบ 32 บิตหรือ 64 บิต หากคุณใช้ JVM ขนาด 64 บิตคุณสามารถตั้งค่าเป็นอะไรที่เล็กกว่าขนาด RAM ลบค่าใช้จ่ายสำหรับ OS / แอปพลิเคชันอื่น ๆ ได้อย่างปลอดภัย บน VM 32 บิตคุณจะต้องทำให้มันเล็กกว่า 1500M (บน Linux) หรือ 1100M (บน Windows) เพราะ VM ต้องการจัดสรรพื้นที่ที่อยู่ติดกันและนั่นเป็นทรัพยากรที่ จำกัด มากสำหรับแอป 32 บิต
จูลส์

4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m ช่วย
kreker


7

eclipse.iniมีลักษณะเช่นนี้

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Xmx1024m

5

ให้ฉันสมมติว่าปัญหานี้เกิดจาก Android XML เพราะคุณเปิดมันบ่อยมาก

ปัญหาสองประการต่อไปนี้ใน StackOverFlow ได้รับการเกิดขึ้นพร้อมกัน:

ทุกครั้งที่ฉันคลิกไฟล์ Android XML ใน Eclipse จะทำการโหลดข้อมูลสำหรับ API ทุกเวอร์ชัน

และ

ไม่สามารถเรียกใช้ dex: GC เกินขีด จำกัด โอเวอร์เฮด

ฉันพบวิธีแก้ไขปัญหาเพิ่มเติมอีกหนึ่งวิธีเพื่อแก้ไขปัญหานี้นอกเหนือจากการเพิ่มค่า VM หรือปรับลดรุ่นเป็น ADT รุ่นเก่ากว่า (22.6.2 หรือ 23.2)

บันทึก:

ADT เวอร์ชันเก่าบางเวอร์ชันซึ่งจะไม่โหลด XML ทุกครั้งที่คุณเปิดดังนั้นไม่มีหน่วยความจำล้นที่จะทำให้เกินขีด จำกัด โอเวอร์เฮด GCนี้ตามที่กล่าวไว้ในเธรดแรก

สารละลาย:

ที่ด้านล่างของคราสจะมีถังขยะสัญลักษณ์กระป๋องซึ่งระบุนักสะสมเรียกมูลฝอย เมื่อใดก็ตามที่คุณปิดไฟล์ XML ของ android อย่าลืมคลิกที่ถังขยะหรือเรียกใช้ Garbage Collectorเพื่อปลดปล่อยหน่วยความจำ วิธีนี้คุณสามารถป้องกันพื้นที่ทำงานจากการหยุดทำงานของข้อผิดพลาดชนิดนี้: D

นี่อาจเป็นทางออกที่ดีที่สุดเพราะคุณไม่สามารถเพิ่มค่า VM เกินขีด จำกัด RAM ของคุณหากคุณเปิด XML Android ของคุณบ่อยๆโดยเฉพาะถ้าคุณใช้ UI จำนวนมากทำงานเหมือนฉัน: P

ฉันหวังว่านี่จะช่วยทุกคนที่จะมาที่หัวข้อนี้ :)

รักษาความสงบและรหัสบน


1

หลังจากผ่านไป 12 ชั่วโมงด้วยข้อผิดพลาดนี้และไม่ประสบความสำเร็จในการเปลี่ยนไฟล์ eclipse.ini ในที่สุดฉันก็พบวิธีแก้ไขที่ถูกต้อง ในตัวแปรสภาพแวดล้อมของฉันมีตัวแปรชื่อ "_JAVA_OPTIONS" ที่มีค่า "-Xmx512M" การเปลี่ยนค่านี้เป็นค่าเดียวกับใน eclipse.ini (-Xmx4096M) ฉันสามารถส่งออกโครงการของฉันไปยังไฟล์ APK อีกครั้ง


อันที่จริงนี่อาจเป็นเคล็ดลับสำคัญจริง ๆ คุณสามารถลบ _JAVA_OPTIONS ออกจากตัวแปรระบบของคุณ (ใช้โปรแกรมแก้ไขสภาพแวดล้อมอย่างรวดเร็ว) มิฉะนั้นผู้คุมอาจเริ่มบ่นด้วยเหตุผลบางอย่าง ขอบคุณมากสำหรับ Viktor
Simon

1

ฉันไม่ทราบเหตุผลที่อยู่เบื้องหลังการแก้ไขปัญหานี้ แต่มันทำงานได้ดีสำหรับฉันตลอดเวลาที่ทุกสิ่งที่กล่าวมาไม่ได้

อย่าเริ่มคราสจากทางลัดหรือลิงค์ เปิดจากeclipse.exeในในโฟลเดอร์ eclipse ของคุณเสมอซึ่งเป็นโฟลเดอร์ที่เก็บไว้eclipse.ini

หมายเหตุ - ฉันพยายามใช้งานลินุกซ์เท่านั้น


1

เพื่อหลีกเลี่ยงข้อความที่น่ารำคาญนี้ฉันต้องเปลี่ยนการกำหนดค่าดังนี้:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-

144807
-product
com.android.ide.eclipse.adt.package.adtproduct
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1024m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

ขึ้นอยู่กับคำตอบที่ทำเครื่องหมายว่าถูกต้องเปลี่ยนแปลง

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

และ:

--launcher.XXMaxPermSize
1024m

1
1) Open eclipse.ini file
2)change
-Xms40m
-Xmx512m
to 
-Xms512m
-Xmx1024m
3)Restart eclipse

ไฟล์eclipse.iniเดียวกันจะอยู่ใน Eclipse ในรูทพา ธ ของ eclipse เองเช่น:

C:\Users\username\Downloads\adt-bundle-windows-x86_64-20140702\eclipse\eclipse.ini

ไฟล์เดียวกันจะอยู่ในโครงการ android studio: -

C:\Users\username\AppData\Local\Android\sdk\tools\lib\monitor-x86_64\monitor(Type:Configuration settings)

0

หากคำตอบเหล่านี้ใช้ไม่ได้ (ไม่ได้สำหรับฉัน) ให้ลองวิธีนี้:

1) ทำสำเนาโฟลเดอร์. metadata ของคุณในพื้นที่ทำงาน

2) ลบไดเรกทอรี. metadata ของคุณหลังจากทำสำเนา

3) เปิด Eclipse และปิด Eclipse

4) คัดลอกโฟลเดอร์ปลั๊กอินจาก. metadata เก่าของคุณไปยัง. metadata ใหม่ของคุณ

5) นำเข้าโครงการทั้งหมดกลับสู่พื้นที่ทำงานของคุณ

6) รักษาความสงบและรหัสบน!

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