【拒絕一問就懵】之沒據說過內存抖動吧

參考資料

Google官方講解視屏數組

背景介紹

【拒絕一問就懵】之你多少要懂點內存回收機制 中我提到過 內存抖動 會引發頻繁的GC,從而使UI線程被頻繁阻塞,致使畫面卡頓。此次咱們就聊聊內存抖動。緩存

須要避免內存抖動

內存抖動是因爲短期內有大量對象進出post

Young Generiation區致使的,它伴隨着頻繁的GC。一般存在內存抖動時,咱們能夠在Android Studio 的 Monitors 中看到以下場景:

內存抖動圖

下面是避免發生 內存抖動的幾點建議:

  • 儘可能避免在循環體內建立對象,應該把對象建立移到循環體外。
  • 注意自定義View的onDraw()方法會被頻繁調用,因此在這裏面不該該頻繁的建立對象。
  • 當須要大量使用Bitmap的時候,試着把它們緩存在數組中實現複用。
  • 對於可以複用的對象,同理可使用對象池將它們緩存起來。

總結

總之,由於內存抖動是因爲大量對象在短期內被配置而引發的,因此咱們要作的就是謹慎對待那些可能會大量建立對象的狀況。線程

相關文章
相關標籤/搜索