Không thể thực thi dex: vượt quá giới hạn chi phí GC trong Eclipse


213

Khi tôi tải xuống dự án Git OsmAnd và đi biên dịch nó, Eclipse đã trả về các lỗi sau:

[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 và Stackoverflow nói rằng tôi phải thay đổi -Xms40m -Xmx384mtrong eclipse.ini. Chuyển đổi sang định dạng Dalvik không thành công: Không thể thực thi dex: Java heap space .
Tôi đã làm sạch dự án và khởi động lại Eclipse, nhưng nó không giúp được gì.

Tôi đã tìm thấy liên kết này: Mẹo dành cho nhà phát triển Android: Chuyển đổi định dạng thành Dalvik không thành công: Không thể thực thi dex: null , Nhưng tôi không biết .jartừ dự án nào để thay đổi đầu vào. Nếu ai có thể giúp, tôi có thể gửi dự án tới họ

Câu trả lời:


437

Nó có thể được sửa bằng cách thay đổi các giá trị VM trong Eclipse.ini. Đặt các giá trị thành 512 và 1024 như dưới đây:

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

Vùng thay đổi trong ảnh nhập mô tả hình ảnh ở đây


8
Cảm ơn. Tôi tự hỏi tại sao các mặc định vẫn hoàn toàn không đủ, tôi không nghĩ có ai đang chạy nhật thực với ít hơn 512/1024 - tôi chỉ đi đến mức đó gấp đôi. Thêm vào đó, tôi muốn các cài đặt được lưu trữ trong một số tệp cấu hình trong thư mục chính của tôi thay vì một tệp ini được ghi đè với mỗi lần nâng cấp.
Yashima

11
Bạn có cần --launcher.XXMaxPermSize 512mhai lần?
Andrew Wyld

4
Các giới hạn về những con số này là gì? Làm thế nào cao nên tôi xem xét đặt chúng?
easycheese

5
@MuhammadRiyaz Nó phụ thuộc vào HĐH của bạn và bạn đang sử dụng JVM 32 bit hay 64 bit. Nếu bạn đang sử dụng JVM 64 bit, bạn có thể đặt nó thành bất kỳ thứ gì nhỏ hơn kích thước RAM của bạn trừ đi chi phí cho hệ điều hành / các ứng dụng khác. Trên máy ảo 32 bit, bạn sẽ muốn giữ nó nhỏ hơn khoảng 1500M (trên Linux) hoặc 1100M (trên Windows) vì VM cần phân bổ không gian địa chỉ liền kề và đó là nguồn tài nguyên rất hạn chế cho các ứng dụng 32 bit.
Jules

4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m đã giúp
kreker

24

Đối với tôi làm theo các bước làm việc

1) Open eclipse.ini file
2)changed
-Xms40m
-Xmx512m
to 
-Xms512m
-Xmx1024m

3)Restart eclipse

Xem tại đây


11
Trên tệp OSX eclipse.ini có trên Eclipse.app/Contents/MacOS/
Ahmad Baraka

7

eclipse.ini trông như thế này.

-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

Hãy để tôi giả sử vấn đề này gây ra do Android XML, vì rất thường xuyên bạn mở nó

Hai vấn đề sau trên StackOverFlow được thực hiện với nhau:

Mỗi lần tôi nhấp vào tệp XML của Android trong Eclipse, nó sẽ tải dữ liệu cho tất cả các phiên bản API

Không thể thực thi dex: vượt quá giới hạn chi phí GC

Tôi đã tìm thấy một giải pháp nữa để giải quyết vấn đề này ngoài việc tăng các giá trị VM hoặc hạ cấp xuống phiên bản ADT cũ hơn (22.6.2 hoặc 23.2)

Ghi chú:

Một số phiên bản ADT cũ hơn sẽ không tải XML mỗi lần bạn mở để không bị tràn bộ nhớ để vượt quá giới hạn chi phí GC này như đã thảo luận trên luồng đầu tiên

Giải pháp:

Ở dưới cùng của nhật thực sẽ có biểu tượng Thùng rác có thể chạy Run Garbage Collector . Bất cứ khi nào bạn đóng tệp XML của Android, đừng quên chỉ cần nhấp vào Thùng rác hoặc Chạy Trình thu gom rác để giải phóng bộ nhớ. Bằng cách này, bạn có thể bảo vệ không gian làm việc khỏi bị lỗi loại này: D

Đây có thể là một giải pháp tối ưu vì bạn không thể tăng giá trị VM vượt quá giới hạn RAM nếu bạn thường xuyên mở XML Android của mình, đặc biệt nếu bạn làm nhiều UI hoạt động như tôi: P

Tôi hy vọng điều này sẽ giúp tất cả những người sẽ đến với chủ đề này :)

Giữ bình tĩnh và bật mã


1

Sau 12 giờ với lỗi này và không thành công với việc thay đổi tệp eclipse.ini, cuối cùng tôi cũng tìm được giải pháp chính xác. Trong các biến môi trường của tôi có một biến có tên "_JAVA_OPTIONS" chứa giá trị "-Xmx512M". Thay đổi giá trị này thành cùng giá trị như trong eclipse.ini (-Xmx4096M) một lần nữa tôi có thể xuất dự án của mình sang tệp APK.


thực ra đây có thể là một mẹo rất quan trọng, bạn có thể xóa _JAVA_OPTIONS khỏi các biến hệ thống của mình (sử dụng trình chỉnh sửa môi trường nhanh) nếu không proguard có thể bắt đầu phàn nàn vì một số lý do. Cảm ơn rất nhiều đến Viktor
Simon

1

Tôi KHÔNG biết lý do đằng sau công việc này, nhưng nó hoạt động với tôi mọi lúc khi tất cả những điều trên không.

Không bắt đầu nhật thực từ một đường cắt ngắn hoặc một liên kết. Luôn mở nó từ eclipse.exethư mục nhật thực của bạn, chính thư mục chứaeclipse.ini

Lưu ý - Tôi đã thử chỉ cho linux.


1

Để tránh thông báo khó chịu này, tôi đã phải thay đổi cấu hình của mình như sau:

-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

dựa trên câu trả lời được đánh dấu là đúng, thay đổi

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

và:

--launcher.XXMaxPermSize
1024m

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

Tệp eclipse.ini tương tự sẽ được đặt trong Eclipse trong đường dẫn gốc của nhật thực này như sau:

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

Các tập tin tương tự sẽ được đặt trong dự án studio android: -

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

0

Nếu những câu trả lời này không hiệu quả (Chúng không dành cho tôi) thì hãy thử điều này:

1) Tạo một bản sao của thư mục .metadata trong không gian làm việc của bạn.

2) Xóa thư mục .metadata của bạn SAU KHI GỬI BẢN SAO

3) Mở Eclipse và đóng Eclipse.

4) Sao chép thư mục plugin của bạn từ .metadata cũ sang .metadata mới của bạn

5) Nhập tất cả các dự án trở lại không gian làm việc của bạn

6) Giữ bình tĩnh và mã hóa!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.