Подтвердить что ты не робот

Как свести к минимуму случаи GC_FOR_ALLOC?

Мое приложение вызывает много ошибок в GC_FOR_ALLOC в определенных местах (методах):

12-29 22:20:30.229: D/dalvikvm(10592): GC_FOR_ALLOC freed 1105K, 14% free 10933K/12615K, paused 33ms, total 34ms
12-29 22:20:30.260: D/dalvikvm(10592): GC_FOR_ALLOC freed 337K, 13% free 11055K/12615K, paused 25ms, total 26ms
12-29 22:20:30.288: D/dalvikvm(10592): GC_FOR_ALLOC freed 278K, 14% free 10951K/12615K, paused 24ms, total 24ms
12-29 22:20:30.495: D/dalvikvm(10592): GC_CONCURRENT freed 633K, 11% free 11317K/12615K, paused 16ms+3ms, total 79ms
12-29 22:20:30.495: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 16ms
12-29 22:20:30.499: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 15ms

Мне ясно, что я делаю что-то неправильно в отношении управления памятью (да, сборка мусора велика, но все же не освобождает меня от какой-либо ответственности, чтобы знать, когда и как распределить).

Можете ли вы порекомендовать подход или техническую помощь по поиску и устранению неполадок, которые могут привести меня к нарушающим строкам кода и возможным решениям?

4b9b3361

Ответ 1

Android DDMS, которая является частью инструментов разработки Android в eclipse, имеет очень полезные инструменты, которые можно использовать для профилирования и отслеживания распределения памяти.

В приведенном ниже снимке экрана показаны некоторые из этих инструментов (все в рамках DDMS), некоторые инструменты необходимо активировать, щелкнув соответствующую кнопку на левой панели (выделено красным), а затем вы увидите значения (некоторые с графиками) в правой панели, выбрав вкладку, которую вы хотите просмотреть (выделено синим цветом)

Хранилище кучи и распределения будет очень полезно в вашем случае.

eclipse screenshot showing profiling and memory allocation tools