ストックGalaxy S3で成長できる十分な空きヒープスペースを備えたOOMを実行しているアプリがあります。アプリは他のデバイスで正常に動作します。
従来の Java では、これは永久世代空間内での OOM によって引き起こされる可能性があることを知っていたので、Dalvik がこれをどのように処理するかを調べてみましたが、決定的なものは見つかりませんでした。Androids SDK には MemoryUsage と ManagementFactory の両方が欠落しているように見えるため、Java のように取得できません。
Android に永続的な世代空間があるかどうか、その内容を検査できるかどうか、サイズと空き容量を取得するにはどうすればよいか、Dalvik が JVM とは異なるこの空間に入るものを処理するかどうかなどを調べようとしています。
このスペースが存在しないか、可能性が低い場合は、他のアイデアも受け入れます。
アプリの情報を少し。OOM を実行している S3 は 4.1.2 を実行しています。アプリは約 12 ~ 25 MB のヒープを使用し、使用可能な最大ヒープ サイズは約 45 MB です。多くのローカル リソース イメージがあり、後でさらに多くの遅延読み込みが行われます。ビットマップを .recylce() しています。アプリは毎回ほぼ同じ場所でクラッシュします。クラッシュした箇所のコードをよく見てみましたが、異常は見当たりません。他のデバイスはこのコードを問題なく実行します。