在 Andorid 中爲什麼要避免「內存抖動」?

內存抖動是指內存頻繁的分配和回收,佔用內存忽高忽低,內存佔用圖形上呈現鋸齒狀
在 Android 開發過程中,你一定聽說過「內存抖動」這個詞,別人肯定也告誡過你要避免內存抖動,但是爲什麼呢?

但是其實初步想,爲什麼要避免內存抖動呢?頻繁創建對象,被 Java 虛擬機的回收機制自動回收了,這不是挺好的嗎?開發者爲什麼還需要關心這個問題呢?

下面講一下原因

1.頻繁 GC 會導致卡頓
在傳統的 GC 模式下,當虛擬機觸發一次 GC,會先暫停所有線程。當頻繁的 GC 這樣 Android 主線程會被頻繁的暫停,勢必會引發卡頓。

2.GC 會導致內存碎片化
在傳統的 GC 模式下,回收一次後,會導致內存碎片化,即導致很多內存塊不連續,導致尋址變慢拖慢程序。極端情況,內存碎片化嚴重,這也導致無法爲新的對象申請一塊連續的內存,極大降低對內存的利用率。

Google 爲了緩解上面的問題,引入了 ART 虛擬機。但是也不能完全避免上述問題。所以開發者一定還是要考慮「內存抖動」的情況,優化自己的代碼。

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