コマンドラインAntを使用して、非常に大きなマルチプロジェクトAndroidプロジェクトをコンパイルしようとしています。私はもともと Ant 1.8.3 を使用していましたが、その後 1.8.4 にアップグレードしました (結局無駄でした)。私は Eclipse をインストールしていますが (Indigo、本日更新)、このプロジェクトの性質上、Eclipse 内から Ant を使用することはできません。
コードは問題なく生成されるように見えますが、操作の「dex」フェーズに到達すると、my に応じてANT_OPTS
「GC Overhead Limit Exceeded」または「Java Heap Space」のいずれかのエラーが発生します。
私はグーグルでスタックをチェックしました。さまざまなリンクを見つけた後 (こちら、こちら、この Stack question、およびthis stack question も参照)、Ant オプションを変更しました。(多くのリンクは、これが Java コードの実行時に何が起こるかをカバーしています。私の問題は、実際にはアップロード用の Android APK を作成する Ant プロセスにあります)。
私のANT_OPTS
環境変数は現在:
-Xms4g -Xmx4g -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=1024m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=8
を使用して GC オーバーヘッド制限を完全にオフにしようとしました-XX:-UseGCOverheadLimit
が、GC オーバーヘッド制限エラーではなく、Java ヒープ領域エラーが発生するだけです。これについて同僚に尋ねましたが、彼らもアイデアがありません。
ああ、もう 1 つの「詳細」: Eclipse を使用してプロジェクトをコンパイルおよびロードできますが、それは「問題なく」動作しているようです。ただし、この「メタ プロジェクト」に必要な膨大な数のプロジェクトを考えると、Ant スクリプトを機能させようとする必要があります。
システム情報:
- OS:Windows7 64ビット
- Java: Sun、1.6、64 ビット
- 物理メモリ: 8Gb
- Android: SDK ツール: R20; プラットフォーム ツール: R12 (本日更新、6 月 28 日)
他にできることはありますか?検索する別のキーワードは?他に見るべき場所はありますか?