python里回收機(jī)制是以引用計(jì)數(shù)為主,標(biāo)記-清除和分代收集兩種機(jī)制為輔。
經(jīng)過(guò)查看相應(yīng)的資料發(fā)現(xiàn)如下
1.python垃圾回收(主要是標(biāo)記-清楚和分代收集)主要針對(duì)的是列表、字典、類等可以當(dāng)做容器存儲(chǔ)的其他對(duì)象的,這是為了解決容器型數(shù)據(jù)結(jié)構(gòu)之間相互循環(huán)引用。
2.python垃圾回收對(duì)于主動(dòng)實(shí)現(xiàn) del 方法的類無(wú)效,所以編寫時(shí)記得考慮是否需要自行管理
3.python的分代收集是由鏈表實(shí)現(xiàn),分為0,1,2代,觸發(fā)收集的閥值為(700,10,10),每一次觸發(fā)收集都會(huì)回收比他小的代;
如:當(dāng)1代觸發(fā)收集,也會(huì)對(duì)0代進(jìn)行收集;
觸發(fā)收集時(shí)會(huì)把0代鏈接到1代的鏈表后面,每個(gè)對(duì)象的頭部都有一個(gè)值對(duì)它進(jìn)行標(biāo)示(判斷是屬于那個(gè)代)(詳細(xì)請(qǐng)看《python源碼解析》最后一章)
參考:
python源碼解析 下載地址: https://pan.baidu.com/s/1jIDtx8y
http://blog.csdn.net/yueguanghaidao/article/details/11274737