2016-03-21 23 views
0

アンドロイドスタジオ1.5.1ソースコードをあるシステムから別のシステムに移動するだけです。クリーンビルドは成功しましたがコード実行中にこの種のエラーが発生しましたOutOfMemoryError:GCオーバーヘッドの上限を超えましたandroid

java.lang.OutOfMemoryError: GC overhead limit exceeded Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 3

は、私はまた、app.gradleに以下のコードを追加しました:

dexOptions { 
     javaMaxHeapSize "4g" 
} 
+0

JVM 64ビットですか?はいの場合、1.7 GB以上のヒープを取得することはできません。 – duffymo

答えて

1

GC overhead limit exceededアプリは、すべてのヒープを占有し、ガベージコレクタは、プログラムを実行するための十分なスペースをきれいにすることができないことを意味します。

だから、メモリやメモリリークでも多く必要なデータは、アプリケーションに存在する(アプリケーションのルートからのアクセスが、もはや必要になることができ、すなわち参照)がある - のみ、さらにアプリのプロファイリングは、あなたの

0

の詳細を与えることができます詳細メッセージ"GC overhead limit exceeded"は、ガベージコレクタが常に実行されており、Javaプログラムの処理が非常に遅いことを示しています。ガベージコレクションの後、Javaプロセスがガベージコレクションを実行している時間の約98%以上を費やしていて、ヒープの2%未満しか回復しておらず、これまでに5回連続して連続したゴミjava.lang.OutOfMemoryErrorがスローされます。この例外は、ライブデータの量が新しい割り当てのための空き領域がほとんどないJavaヒープにほとんど収まらないため、通常はスローされます。 処置:ヒープ・サイズを増やしてください。 GCオーバーヘッド制限を超えたjava.lang.OutOfMemoryError例外は、コマンドラインフラグ-XX:-UseGCOverheadLimitでオフにすることができます。

これは、あなたがあなたのマニフェストファイルに

android:largeHeap="true" 

を追加することで、アプリのためのあなたの割り当てられたメモリを増やすと、それはあなたの問題を解決するかどうかを確認することができますOracleのJavaドキュメント

0

から取られました。 しかしOutOfMemoryErrorは通常メモリ管理の悪い結果であるため、あなたのアプリケーションでメモリリークを探す必要があります。

関連する問題