4

私の Android アプリケーションは基本的にフォアグラウンド サービスです。アプリケーションのユーザー インターフェイスの側面は、このフォアグラウンド サービスの設定と構成のためのものです。

アプリケーション UI からサービスを開始すると、23 MB のメモリ使用量が表示され始めます。

Android がサービスを開始すると (起動時など)、7 MB のメモリ使用量が表示され始めます。アプリケーション UI を開くと、メモリ使用量が 23 MB に増加します。

UI の MainActivity で onDestroy() が呼び出されると、関連するドローアブルとリソースはフォアグラウンド サービスに接続されたメモリに残り、ガベージ コレクションは行われません。

System.exit(0)MainActivity の onDestroy() を呼び出すことで、問題を「解決」できます。その後、Android は 7 MB でフォアグラウンド サービスを再起動します。

さらに、マニフェストでタグを使用しandroid:processて、UI 要素とサービス要素を分離できます。

上記の「解決策」はどちらも実際の問題に対処していませんが、あなたの助けを借りて解決したいと思っています!

Eclipse 経由で MAT ツールを使用すると、さまざまなオブジェクトがメモリに保持されていることがわかります。サイズが大きいのは次の 2 つだけです。

Class Name | Shallow Heap | Retained Heap Percentage

class android.content.res.Resources @ 0x40ef7910 System Class|           40 |     8,475,664 |     68.71%
android.graphics.drawable.BitmapDrawable$BitmapState @ 0x411beb20|       40 |     1,127,720 |     9.14%

gc ルートへのパスを調べても、これらがメモリに残っている理由や、何がそれらへの参照を保持しているのかについての手がかりは得られません。

MainActivity.this使用しているコンテキストを試し、getApplicationContext()静的変数への参照を削除しましたが、これらのメモリ オブジェクトを取り除くことはできません。

どんな助けでも大歓迎です。

編集: 弱い参照を除く gc ルートへのパス:

Class Name | Shallow Heap | Retained Heap

class android.content.res.Resources @ 0x40ef7910 System Class|     40 |     8,475,664

Class Name      | Shallow Heap Retained Heap

android.graphics.drawable.BitmapDrawable$BitmapState @ 0x411beb20|  40 | 1,127,720

Class Name                              | Shallow Heap | Retained Heap**

[224] java.lang.Object[510] @ 0x41843738|        2,056 |     8,466,904

mValues android.util.LongSparseArray @ 0x40f46b28|  24 |     8,471,024

sPreloadedDrawables class android.content.res.Resources @ 0x40ef7910 SystemClass|          40 |     8,475,664

Found 1 path. No more paths left - for both entries.
4

1 に答える 1

0

私の Android アプリケーションは基本的にフォアグラウンド サービスです。アプリケーションのユーザー インターフェイスの側面は、このフォアグラウンド サービスの設定と構成のためのものです。

これは、ごく少数のアプリに適しています。

gc ルートへのパスを調べても、これらがメモリに残っている理由や、何がそれらへの参照を保持しているのかについての手がかりは得られません。

Resources少なくとも 1 つはすべての Dalvik プロセスにあり、削除することはできません。ほとんどの場合、BitmapDrawable$BitmapStateは に関連付けられていResourcesます。

于 2013-04-22T18:11:48.590 に答える