2

私は基本的な Android アプリケーションを作成していますが、大量のガベージ コレクションに苦しんでいます (GC は毎秒 4 ~ 5 回起動します)。根本的な原因を探してみたところ、onCreate関数が呼び出されるとすぐにアプリのメモリがほとんどないことに気付きました。

アプリが起動するとすぐに、DDMS はヒープのほぼ 91% が使用されていることを示し、そのほとんどが 1 バイト配列によって使用されています。また、メモリリークなどしていないかメモリ解析ツールを実行したところ、アプリを実行した後でもメモリのほとんどがandroid.content.res.resources.

アプリケーションがリソースに対して大量のメモリを失っているのはなぜですか? 私のアプリが持っている唯一のリソースは、22KB の小さな JPEG 画像です。共有リソースなどが原因で空きヒープが誤って報告されることがあることを他の場所で読みましたが、GC はアプリの実行中ほど頻繁に開始されるべきではありません。誰か助けてくれませんか?

FWIW、Galaxy S3 で実行されたまったく同じアプリは、同じ量の合計メモリ (約 10 MB) を示していても、開始時に約 20% のヒープ使用率を示しています。問題のある電話は Galaxy S2 です。

4

1 に答える 1

0

携帯電話を Cyanogenmod 10.1 にアップグレードしたところ、ヒープ使用量が開始時に ~30% になり、GC が起動しなくなりました。たぶん、Samsung ファームウェアのバグでしょうか?

于 2013-08-12T21:54:43.680 に答える