待ち

2013-04-22 24 views
8

をブロック:待ち

04-22 16:21:30.685: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 78ms+17ms, total 360ms 

04-22 16:21:30.685: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 143ms 
04-22 16:21:31.845: D/dalvikvm(967): GC_CONCURRENT freed 1552K, 20% free 7019K/8720K, paused 116ms+18ms, total 554ms 

04-22 16:21:31.845: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 268ms 
04-22 16:21:32.435: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 75ms+9ms, total 192ms 

04-22 16:21:32.435: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 73ms 
04-22 16:21:32.945: D/dalvikvm(967): GC_CONCURRENT freed 1552K, 20% free 7019K/8720K, paused 75ms+10ms, total 209ms 

04-22 16:21:32.945: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 70ms 
04-22 16:21:33.434: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 78ms+12ms, total 192ms 

を、これは私がapplication.Any提案を終了するまで続けおかげ

答えて

2

これは、あなたがやっていることを意味します?あまりにも多くの操作と多くのメモリが使用されています。したがってGC(Garbage collector)はメモリを解放するために呼び出されています。

4月22日16:21:30.685:D/dalvikvm(967):GC_CONCURRENTは、20% フリー7019K/8720K、1545Kを解放78ms + 17msを一時停止し、解放された合計360ms

は方法を示し多くのメモリが解放されました

GC_CONCURRENTヒープがオーバーフローを防止するには大きすぎる場合に呼び出されます。

一時停止する78ms + 17ms - GCが収集を完了するまでに要した時間を示します。

Refer

さらにメモリダンプを取ると、ダンプ使用MATツールを分析します。

6

多くの新しいオブジェクトを作成してすぐに削除するようです。

WAIT_FOR_CONCURRENT_GCはこの1つを参照してください:それはあなたが(例えば、オブジェクト作成用)のメモリを割り当てようと、それはメモリに収まらないことを意味し what does WAIT_FOR_CONCURRENT_GC blocked mean?

。それはGC_CONCURRENTが解放された原因です。その通常のガベージコレクション。

パフォーマンスの問題が発生した場合は、オブジェクトを再利用したり、スペアを確保してください。

1

ほとんどが@luxerと合意していますが、あまりにも多くのオブジェクトを割り当てているわけではないと思いますが、いくつかの巨大なオブジェクトを割り当てています。 @luxerが指すWAIT_FOR_CONCURRENT_GCのリンクを参照すると、アプリケーションで2番目のGCがトリガされていることがわかりますが、ヒープ占有率がソフトリミットに達したときにトリガされるコンカレントgcが進行中です。 2番目のgcは、明示的に、または割り当てが失敗したためにトリガーされた可能性があります。あなたがSystem.gc()を呼び出すように指定していないので、あなたの割り当てが失敗し、システムがgcを実行しようとしていると思います。

だから、毎回それらを割り当てる代わりに、いくつかの巨大なオブジェクトを再利用することを真剣に検討する必要があります。これはより良い方法ですが、何らかの理由でそれができない場合は、おそらくヒープサイズをバンプすることができます(大きなヒープを設定することによって)助けになるかもしれません。

2

ある条件が常に真であるという理由だけで、ループが終了しない場合があります。

これが原因でこのケースが最初に起きたかどうかを調べてみてください。