Dalvik のメモリ断片化の処理方法を教えてください。たとえば、アプリに小さなメモリを割り当てているとします。しかし、それらのいくつかを解放してから、後で大きなチャンクを割り当てようとします。ヒープにすべての「穴」がある場合、Dalvik はどのようにそのような要求を処理できますか?
logcat からこれを理解するのに助けが必要です:
11-15 02:50:21.837 D/dalvikvm( 990): GC_BEFORE_OOM freed 16K, 40% free 9830K/16384K, paused 90ms, total 90ms
11-15 02:50:21.837 E/dalvikvm-heap( 990): Out of memory on a 5032864-byte allocation.
私のアプリケーションは 16384K のうち 9830K を使用していると言われました。そして、16M が最大ヒープ サイズであることを理解しています。これ以上大きくすることはできません。
しかし、これで 6554K は空くはずです (16384K - 9830K)。dalvik が「5032864 バイトの割り当てでメモリ不足」と言う理由。それは私が残したものよりも小さい 4914K です。
ありがとうございました。