TMXタイルマップを使用するAndroidゲームを開発しています。マップがロードされている間、アプリケーションのメモリ使用量は100MB以上になります。各マップがロードされた後、私はガベージコレクタが(System.gc()
を使用して)実行されることを示唆しており、意外にも使用中のメモリの量はまったく減少しません。 System.gc()
メソッドを呼び出すとガベージコレクタが確実に実行されるわけではありませんが、デバイスの最大VMヒープサイズは約130MB(他の古いデバイスの場合は16-20MB)と考えています。予想どおり、この後に別のマップがロードされると、アプリケーションはメモリー不足のエラーをスローし、クラッシュします。Androidでメモリが非常に少ないにもかかわらずガベージコレクタが実行されない
しかし、EclipseでDDMSヒープタブ(「原因GC」ボタン)を使用してGCを強制的に実行したときに、アプリケーションのメモリ使用量が元に戻ってしまうように、自分のコードにメモリリークや未解放のリソースがないことを保証できます。約15-16MB。
地図を読み込む際に100MBを超える過剰なメモリ使用量が残っている可能性があります。
アドバイスをいただきありがとうございます。私はメモリリークのための私のアプリケーションの別の場所を見て、アンドロイドのビットマップの実装についてさらに読んでいくつもりです。 – rodit