第九章:内存管理
引用計(jì)數(shù):垃圾回收機(jī)制的依據(jù)
a.變量的值被引用,該值的引用計(jì)數(shù) +1b.變量的值被解綁,該值的引用計(jì)數(shù) -1
c.引用計(jì)數(shù)為0時(shí)就會(huì)被垃圾回收機(jī)制回收
?
引用計(jì)數(shù)會(huì)出現(xiàn)循環(huán)引用問題:相互引用無法釋放
a.兩個(gè)變量引用其值,值之間又相互引用b.變量與值進(jìn)行解綁,但是值之間還存在相互引用,導(dǎo)致值得引用計(jì)數(shù)永遠(yuǎn) >0
c.引用計(jì)數(shù)>0的值永遠(yuǎn)無法被引用計(jì)數(shù)機(jī)制回收,導(dǎo)致內(nèi)存泄露
?
標(biāo)記清除:解決循環(huán)引用問題
所有線程能訪問到的棧區(qū)變量,稱之為 gc roots對象a.所有g(shù)c roots對象可以直接或間接訪問到的變量值,都會(huì)被 標(biāo)記機(jī)制 標(biāo)記為存活狀態(tài)
b.將所有存活狀態(tài)的值形成新的拷貝,變量完成重新引用
c.清除機(jī)制 會(huì)將之前所有產(chǎn)生的值都進(jìn)行回收
?
分代回收:采用的還是引用計(jì)數(shù)來回收,是對該機(jī)制的一個(gè)優(yōu)化措施
a.剛產(chǎn)生的變量值放在新生代中高頻率檢查,如果引用計(jì)數(shù)為0,就是采用引用計(jì)數(shù)機(jī)制回收,長期存活的變量值經(jīng)過多次檢查后會(huì)提高分代b.分帶又高,檢查頻率越低,且還能繼續(xù)提高一直存活的變量值的分帶,從而來提高整體垃圾回收的效率
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/haojunliancheng/p/10758417.html
總結(jié)
- 上一篇: 02-再探MySQL数据库
- 下一篇: 2.12 Hivet中order by,