參考資料
Google官方講解視屏數組
背景介紹
在 【拒絕一問就懵】之你多少要懂點內存回收機制 中我提到過 內存抖動 會引發頻繁的GC,從而使UI線程被頻繁阻塞,致使畫面卡頓。此次咱們就聊聊內存抖動。緩存
須要避免內存抖動
內存抖動是因爲短期內有大量對象進出post
Young Generiation區致使的,它伴隨着頻繁的GC。一般存在內存抖動時,咱們能夠在Android Studio 的 Monitors 中看到以下場景:
下面是避免發生
內存抖動的幾點建議:
- 儘可能避免在循環體內建立對象,應該把對象建立移到循環體外。
- 注意自定義View的
onDraw()
方法會被頻繁調用,因此在這裏面不該該頻繁的建立對象。
- 當須要大量使用Bitmap的時候,試着把它們緩存在數組中實現複用。
- 對於可以複用的對象,同理可使用對象池將它們緩存起來。
總結
總之,由於內存抖動是因爲大量對象在短期內被配置而引發的,因此咱們要作的就是謹慎對待那些可能會大量建立對象的狀況。線程