0

Android GCがそのように動作する理由を理解しようとしていますが、

  • VM ヒープは 512 MB に設定されています
  • Runtime.getRuntime maxMemory512MB
  • Runtime.getRuntime totalMemory13MB
  • Runtime.getRuntime freeMemory3MBです

私は常にこれらの値の +/- 2 ~ 3 MB 以内です。

私のコードは機能しているので、多くのオブジェクトを使用していますが、512 MB 近くにはありませんが、特にタイトなループで、logcat で GC 呼び出しが常に見られます。ヒープを成長させないのはなぜですか?アプリを毎回 300 ミリ秒一時停止するのではなく、少しずつ GC を実行します。

ガベージ コレクション プロセスをもう少し制御する方法はありますか (これはマーケット アプリではなく、カスタム ROM のインストールに問題はありません)。多くのオブジェクト。実際のデバイス (他のアプリが実行されていないときに 2 GB の RAM を搭載したクワッド 1.2 GHz マシン) で同様の動作が見られるため、これほど強力なマシンを持っていてコーディングできないのはちょっと面倒です。私の好きな方法で。)

4

1 に答える 1

0

主な問題は、アプリが VM で実行され、各 VM に制限があることです。ネイティブ (NDK) に移行しない限り、VM が取得する小さな RAM で生活する必要があります。

カスタムロムを入れても問題ありません。

独自の ROM を構築する (または構成可能な設定で ROM を検索する) 場合は、VM あたりのサイズを増やして満足してください。

私のコードは機能しているので、多くのオブジェクトを使用しています

「多くのオブジェクトを使用する」ことと「非常に短い寿命を持つ多くのオブジェクトを使用する」ことには違いがあります。しかし、あなたはそれについて聞きたくないので...

于 2013-03-29T15:14:01.287 に答える