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.