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.iniDalvik形式への変換に失敗しました:dexを実行できません:Javaヒープスペース
プロジェクトをクリーンアップして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未満でEclipseを実行している人はいないと思います。加えて、アップグレードごとに上書きされるiniファイルではなく、ホームディレクトリの設定ファイルに設定を保存したいと思います。
屋島

11
あなたは--launcher.XXMaxPermSize 512m二度必要ですか?
Andrew Wyld 2013年

4
これらの数の制限は何ですか?それらを置くことをどのくらい高く考えるべきですか?
easycheese

5
@MuhammadRiyazこれは、OSと、32ビットと64ビットのどちらのJVMを使用しているかによって異なります。64ビットJVMを使用している場合は、RAMサイズからOS /その他のアプリケーションのオーバーヘッドを差し引いた値よりも小さい値に安全に設定できます。32ビットのVMでは、連続したアドレス空間を割り当てる必要があるため、1500M(Linuxの場合)または1100M(Windowsの場合)よりも小さく保つ必要があります。これは、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に関する次の2つの問題は互いに関係しています。

EclipseでAndroid XMLファイルをクリックするたびに、すべてのAPIバージョンのデータが読み込まれます

そして

dexを実行できません:GCオーバーヘッド制限を超えました

VMの値を増やすか、古いADTバージョン(22.6.2または23.2)にダウングレードする以外に、この問題を解決するもう1つの解決策を見つけました

注意:

最初のスレッドで説明したように、GCオーバーヘッドの制限を超えてメモリオーバーフローが発生しないため、開くたびにXMLをロードしない古いADTバージョンの一部

解決:

日食の下部に、ゴミ箱コレクターの実行を示すゴミ箱の記号があります。AndroidのXMLファイルを閉じるたびに、ゴミ箱をクリックするガーベッジコレクター実行してメモリを解放することを忘れないでください。このようにして、この種のエラーのクラッシュからワークスペースを保護できます:D

AndroidのXMLを非常に頻繁に開く場合、特に多くのUIが私のように機能する場合は、RAMの制限を超えてVMの値を増やすことができないため、これは究極のソリューションになる可能性があります:P

これがこのスレッドに来るすべての人に役立つことを願っています:)

落ち着いてコードオン


1

このエラーで12時間後、eclipse.iniファイルを変更しても成功しなかった後、最終的に正しい解決策を見つけました。私の環境変数には、値「-Xmx512M」を含む「_JAVA_OPTIONS」という名前の変数がありました。この値をeclipse.iniと同じ値に変更する(-Xmx4096M)プロジェクトを再びAPKファイルにエクスポートできました。


実際、これは本当に重要なヒントになる可能性があります。システム変数から_JAVA_OPTIONSを削除できます(迅速な環境エディターを使用)。そうしないと、何らかの理由でプロガードが文句を言う可能性があります。Viktorに感謝します
Simon

1

この回避策の背後にある理由はわかりませんが、上記のすべてがうまくいかない場合は常にうまくいきます。

ショートカットまたはリンクから日食を開始しないでください。常にeclipse.exeeclipseフォルダーのから開きます。eclipse.ini

注-私はLinuxのみを試しました。


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を開いて閉じます。

4)プラグインフォルダーを古い.metadataから新しい.metadataにコピーします

5)すべてのプロジェクトをワークスペースにインポートします

6)落ち着いてコードをオンにしてください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.