4

私のプロジェクトでは、単一の XML レイアウト (setContentView によって有効化) で構成される単純なアクティビティがあります。ただし、プロジェクトには他の活動があります。

レイアウトは、基本的に 2 つの .jpg 画像で構成されます。最初のものは 25kB で、400x153 ピクセルです。2 つ目は 4kB で、150x50 ピクセルです。

この非常に単純なコンテキストにもかかわらず、DDMS は、プログラムに 13MB が割り当てられていることを教えてくれます。これは、2 つの小さなイメージしかロードされておらず、一部のデバイスでは各プログラムの最大ヒープ サイズが 16MB であることを考えると、非常に大きいと思います。

このレイアウトでヒープが非常に大きくなるのは正常ですか?

編集:HProfダンプ:

問題の疑い 1: クラス「android.content.res.Resources」が「」によってロードされ、9,429,232 (70.39%) バイトを占有しています。メモリは、"" によってロードされた "java.lang.Object[]" の 1 つのインスタンスに蓄積されます。

問題の疑い 2: 「android.graphics.Bitmap」の 3 つのインスタンスが「」によってロードされ、2,147,960 (16.03%) バイトを占めています。

Biggest instances:
•android.graphics.Bitmap @ 0x41407b98 - 1,048,648 (7.83%) bytes. 
•android.graphics.Bitmap @ 0x4169e6a0 - 979,256 (7.31%) bytes. 

私はこれを本当に解釈することはできません。しかし、他のリソースが事前にロードされているように見えますか? (それぞれの活動に入る前に?)

4

1 に答える 1

0

それがあなたのプログラムがやろうとしているすべてだと言うなら、それは正常です。ビットマップは多くのメモリを占有します。画像を最適化してみてください。そうすれば、アプリのメモリ フットプリントを削減するのに確実に役立つはずです。背景を作成するときは、9 パッチの画像を考えてください。

于 2012-07-20T04:31:31.550 に答える