Object Pools對象池 未讀

http://hukai.me/android-performance-patterns-season-2/

在程序裏面經常會遇到的一個問題是短時間內創建大量的對象,導致內存緊張,從而觸發GC導致性能問題。對於這個問題,我們可以使用對象池技術來解決它。通常對象池中的對象可能是bitmaps,views,paints等等。關於對象池的操作原理,不展開述說了,請看下面的圖示:

android_perf_2_object_pool

使用對象池技術有很多好處,它可以避免內存抖動,提升性能,但是在使用的時候有一些內容是需要特別注意的。通常情況下,初始化的對象池裏面都是空白的,當使用某個對象的時候先去對象池查詢是否存在,如果不存在則創建這個對象然後加入對象池,但是我們也可以在程序剛啓動的時候就事先爲對象池填充一些即將要使用到的數據,這樣可以在需要使用到這些對象的時候提供更快的首次加載速度,這種行爲就叫做預分配。使用對象池也有不好的一面,程序員需要手動管理這些對象的分配與釋放,所以我們需要慎重地使用這項技術,避免發生對象的內存泄漏。爲了確保所有的對象能夠正確被釋放,我們需要保證加入對象池的對象和其他外部對象沒有互相引用的關係。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章