Android OOM, память никогда не освобождается - PullRequest
0 голосов
/ 02 февраля 2012

Я занимаюсь разработкой на Android 2.3.3 API Lv10.Мое приложение использует интерфейс «LoaderManager» для загрузки изображений в фоновом режиме, и изображения отображаются в ViewPager.Если я повторю просмотр изображений, приложение в конечном итоге рухнет.Похоже, приложение быстро распределяет память, а сборщик мусора не может освободить ее часть.

Есть ли способ отследить, какой объект находится в памяти?

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Ссылки, предоставленные @JoxTraex, великолепны. Но к этой проблеме я наконец нашел причину. Это LoaderManager , который содержит ссылку на объект Loader и объект, возвращаемый методом Loader.loadInBackground . После вызова LoaderManager.destroyLoader ( id ) проблема исчезла навсегда.

1 голос
/ 02 февраля 2012

Это довольно сложная тема, особенно если вы сохраняете ссылку на свои растровые изображения, то вы начинаете перегружать память. Это потому, что образы очень тяжелы с точки зрения памяти / ВМ. Вы должны взглянуть на то, что говорит Ромен Гай о графике и растровых изображениях и как с этим справиться.

Здесь:

http://www.youtube.com/watch?v=duefsFTJXzc

http://www.youtube.com/watch?v=wJYTBjMZJh0

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

...