產(chǎn)生內(nèi)存泄漏的原因
一個長生命周期的對象持有一個短生命周期對象的引用通俗講就是該回收的對象,因為引用問題沒有被回收,最終會產(chǎn)生OOM。
產(chǎn)生內(nèi)存抖動的原因
內(nèi)存頻繁的分配與回收,(分配速度大于回收速度時)最終會產(chǎn)生OOM
內(nèi)存回收的相關(guān)算法
1. 標(biāo)記清除算法Mark-Sweep(節(jié)省內(nèi)存)
缺點:
效率問題,標(biāo)記和清除兩個過程效率都不高
回收后會產(chǎn)生大量不連續(xù)的空間,造成空間碎片太多.
2. 復(fù)制算法Copying(效率高)
缺點: 直接將堆劃分兩半,有點簡單粗暴,對內(nèi)存會造成浪費.
3. 標(biāo)記壓縮算法Mark-Compact
4. 分代收集算法
視頻解析:Android內(nèi)存優(yōu)化——內(nèi)存抖動原理解析以及解決方案_嗶哩嗶哩_bilibili