dex를 실행할 수 없음 : Eclipse에서 GC 오버 헤드 한계를 초과했습니다.


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에서 변경해야한다고 말했습니다 eclipse.ini. Dalvik 형식으로 변환하지 못했습니다 : dex : Java heap space를 실행할 수 없습니다 .
프로젝트를 정리하고 Eclipse를 다시 시작했지만 도움이되지 않았습니다.

이 링크를 찾았 습니다. Android 개발자를위한 팁 :“Dalvik 형식으로 변환하지 못했습니다 : dex를 실행할 수 없습니다 : null” 그러나 .jar프로젝트에서 입력을 변경할 대상을 알 수 없습니다 . 누구든지 도움을 줄 수 있으면 프로젝트를 그들.

답변:


437

Eclipse.ini에서 VM 값을 변경하여 수정할 수 있습니다. 아래와 같이 값을 512 및 1024로 설정하십시오.

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

이미지에서 변경된 영역 여기에 이미지 설명을 입력하십시오


8
감사. 나는 왜 기본값이 여전히 너무 부적절했는지 궁금해합니다. 나는 512/1024 미만으로 일식을 실행하고 있다고 생각하지 않습니다. 또한 설정을 업그레이드 할 때마다 덮어 쓰는 ini 파일 대신 홈 디렉토리의 일부 구성 파일에 저장하기를 바랍니다.
야시마

11
--launcher.XXMaxPermSize 512m두 번 필요하십니까 ?
앤드류 와일드

4
이 숫자의 한계는 무엇입니까? 그것들을 넣는 것을 얼마나 고려해야합니까?
easycheese

5
@MuhammadRiyaz OS 및 32 비트 또는 64 비트 JVM을 사용하는지 여부에 따라 다릅니다. 64 비트 JVM을 사용하는 경우 OS / 기타 애플리케이션의 RAM 크기에서 오버 헤드를 뺀 값보다 작은 값으로 안전하게 설정할 수 있습니다. 32 비트 VM의 경우 VM이 인접한 주소 공간을 할당해야하기 때문에 약 1500M (Linux) 또는 1100M (Windows)보다 작게 유지해야합니다. 이는 32 비트 앱에 대한 리소스가 매우 제한적입니다.
Jules

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에서 다음 두 가지 문제가 서로 실현됩니다.

Eclipse에서 Android XML 파일을 클릭 할 때마다 모든 API 버전의 데이터가로드됩니다.

dex를 실행할 수 없습니다 : GC 오버 헤드 제한을 초과했습니다

내가 발견 한 번 더 솔루션을 버전 (22.6.2 또는 23.2)을 VM 값을 증가 또는 이전 ADT으로 다운 그레이드가 아닌 다른이 문제를 해결하려면

노트 :

열 때마다 XML을로드하지 않는 이전 ADT 버전 중 일부 는 첫 번째 스레드에서 설명한 대로이 GC 오버 헤드 제한을 초과 하는 메모리 오버 플로우가 없습니다.

해결책:

일식의 하단에는 쓰레기 수거통을 나타내는 쓰레기통 기호가 있습니다 . 안드로이드의 XML 파일을 닫을 때마다 휴지통을 클릭 하거나 가비지 콜렉터실행 하여 메모리를 해제 하는 것을 잊지 마십시오 . 이런 식으로 작업 영역이 이런 종류의 오류를 발생시키지 않도록 보호 할 수 있습니다.

안드로이드 XML을 매우 자주 열면 특히 나처럼 많은 UI 작업을하는 경우 RAM 한계를 초과하여 VM 값을 늘릴 수 없기 때문에 이것은 궁극적 인 솔루션 일 수 있습니다 : P

나는 이것이이 스레드에 올 모든 사람들을 도울 수 있기를 바랍니다 :)

평온과 코드를 유지


1

이 오류가 발생한 12 시간 후 eclipse.ini 파일 변경에 성공하지 못한 후 마침내 올바른 해결책을 찾았습니다. 내 환경 변수에는 "-Xmx512M"값을 포함하는 "_JAVA_OPTIONS"라는 변수가있었습니다. 이 값을 eclipse.ini (-Xmx4096M)와 같은 값으로 변경하면 프로젝트를 APK 파일로 다시 내보낼 수있었습니다.


실제로 이것은 정말 중요한 팁 일 수 있습니다. 시스템 변수에서 _JAVA_OPTIONS를 삭제할 수 있습니다 (빠른 환경 편집기 사용) 그렇지 않으면 어떤 이유로 proguard가 불평하기 시작할 수 있습니다. 빅토르에게 감사를 전합니다
Simon

1

이 해결 방법의 이유를 모르겠지만 위의 모든 사항이 해당되지 않는 경우 항상 작동합니다.

바로 가기 또는 링크에서 일식을 시작하지 마십시오. 항상 eclipse.exe이클립스 폴더에서 파일을 엽니 다 .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.