web-dev-qa-db-ja.com

I / artの取得:明示的な並行マークスイープGCが解放されました

私はサービスを開始しています=>バックグラウンドサービス、そして "新しいスレッド"でファイルのチェックを開始します。

ログ:I/art: Explicit concurrent mark sweep GC freed 25935(1686KB) AllocSpace objects, 13(903KB) LOS objects, 39% free, 13MB/22MB, paused 649us total 43.569ms

これは、SDカードのMyData内のファイルをスキャンするだけであり、写真の束(約20枚)が含まれています。

**スキャン=写真の名前を取得して文字列に保存します。

14
Jaeger

これは、ガベージコレクタがその仕事をしてメモリを解放していることを意味します。

これが頻繁に(または一貫して)表示される場合は、割り当てられているオブジェクトが多すぎる可能性があります。一般的な原因は、次のようにループ内で多くの(または少数の大きな)オブジェクトを割り当てることです。

for (int i = 0; i < 100; i++) {
    Bitmap bmp = Bitmap.create(100, 100, Bitmap.Config.ARGB_4444);
}

このループにヒットするたびに、100個の新しいビットマップオブジェクトを割り当てます。

GCスイープを防ぐ最善の方法は、オブジェクトを割り当てないことです。もちろん、Javaでオブジェクトを割り当てる必要があるので、不必要に割り当てないようにする必要があります。

これは多くのYouTubeビデオの1つです Googleがリリースし、GCイベントを回避し、メモリを適切に管理するためのヒントを公開しています。

27
Bryan Herbst