私のアプリのメモリ使用量を分析していて、奇数Drawables
が数メガバイトのヒープを絶えず食べています。ここでMATからいくつかのスクリーンショットです:メモリダンプからプリロードされたシステムドロワブル(ビットマップ)のIDまたは名前を調べる方法
ドミネーターツリー2つのかなり大きなビットマップでは
上記ビットマップの1
のためのGCのルーツこのビットマップへのパスは、常にヒープ・ダンプに表示されます。私の電話から(、Samsung Galaxy Nexus、OS 4.1.1)、どれくらい長く、どれくらい集中して使用しても問題ありません。
私は既にMAT - を使用してこのビットマップのソースを検索しようとしました。私は見つけることができたすべての有用な情報は、ビットマップのwidth
とheight
だった、それは両方の512×512です:
しかし、我々のアプリは、任意の単一の512×512ドローアブルを持っていません。私はこれがいくつかの "システム"ドロアブルであると仮定します。しかし、正確に何ですか?なぜ彼らはとても大きいの?
私はandroid.content.res.Resources
クラスのソースコードも見てきました。sPreloadedDrawables
フィールドの検索 - 運もありません。私がメモリダンプから得たのはkey
からsPreloadedDrawables
までですが、このキーからファイル名やリソースIDを特定することはできません。
だから、私の質問は次のとおりです。
は、どのように私は、このビットマップの名前またはIDを確認できますか?
この巨大なビットマップは何のために読み込まれ、なぜそれらは常にメモリ内にあるのですか?
更新:
私はlook at this bitmaps from memory dumpへの道を発見しました。この2つのビットマップは、シンプルなグラデーションです.1つは黒、もう1つは白です。私はこれがHolo.Light
とHolo.Dark
ICSテーマのリソースだと思います。しかし、私の2番目の質問はまだ実際です:なぜこのビットマップは常にメモリにとどまっていますか?アップロードやリサイクルの方法はありますか?
ですか? – toadzky
私はこのビットマップの名前/ IDがこのビットマップのために何がロードされているのか把握しようとしていて、おそらく私のコードから何かをしようとしています – HitOdessit