0

アプリケーションの 1 つのサービスを停止すると、メモリ使用量はサービスの実行時と同じになります。このサービスを始めないと増えません。メイン アクティビティによってサービスが停止されたときに、Android がサービスのメモリを解放しないのはなぜですか?

4

3 に答える 3

1

Android は、コンテキスト オブジェクト (Activity、Service ...) を含む各オブジェクト割り当てに対してシステム メモリを割り当てません。

各 Android アプリはそのDVM上で実行されるため、Androidは OS の状態、使用可能なメモリ、およびその他の要因に応じて、その VM に特定のメモリを提供します。

アプリケーションはそのメモリを使用し、KVMがより多くのメモリを要求した場合、OS はより多くのメモリを割り当てようとします。そのため、Linux プロセス レベルでは、オブジェクトの割り当ての影響を確認できません。実際、最新の VM でそれを確認できるとは思えません。

割り当て解除についても同様です。

ここを見てください:JVMメモリはKVMではありませんが、同じ概念を共有しています。

于 2013-05-11T21:36:38.650 に答える
0

オブジェクトへの参照がなくなった場合、GC は最終的にそれを解放します。メモリが少なくなるとGCが実行されるため、メモリ不足によるエラーは表示されません。

サービスが停止したら、必ずオブジェクトを解放してください。

于 2013-05-11T21:25:11.590 に答える
0

後でガベージ コレクターを実行して、参照されていないオブジェクトを削除することができます。オブジェクトを解放した直後には発生しません。

于 2013-05-11T20:21:36.410 に答える