Python垃圾收集机制
生活随笔
收集整理的這篇文章主要介紹了
Python垃圾收集机制
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.引用計(jì)數(shù)
增加引用計(jì)數(shù)
- 對(duì)象被創(chuàng)建
x = 3.14 - 或另外的別名被創(chuàng)建
y = x - 或作為參數(shù)被傳遞(新的本地引用)
foobar(x) - 或成為一個(gè)容器的對(duì)象
myList = [123, x, ‘xyz]
- 對(duì)象被創(chuàng)建
減少引用計(jì)數(shù)
- 一個(gè)本地引用離開(kāi)了其作用范圍。比如foobar()函數(shù)結(jié)束時(shí)
- 對(duì)象的別名被顯示銷毀
del y # 執(zhí)行del會(huì)產(chǎn)生兩個(gè)結(jié)果 - 對(duì)象的一個(gè)別名被復(fù)制給其他對(duì)象
x = 123 - 對(duì)象從一個(gè)窗口對(duì)象中移除
myList.remove(x) - 窗口對(duì)象本身被銷毀
del myList
2.循環(huán)引用
一個(gè)循環(huán)引用發(fā)生在當(dāng)你至少有兩個(gè)對(duì)象互相引用時(shí),也就是即使其他所有引用都消失,其引用計(jì)數(shù)依然不為0,這時(shí)候僅靠引用計(jì)數(shù)顯然是不夠的
list1 = [] list2 = [] list1.append(list2) list2.append(list1)Python的垃圾收集器實(shí)際上是一個(gè)引用計(jì)數(shù)器和一個(gè)循環(huán)垃圾收集器,這種情況就需要循環(huán)垃圾收集器來(lái)處理了。
3.標(biāo)記-清除
標(biāo)記-清除機(jī)制,顧名思義,首先標(biāo)記對(duì)象(垃圾檢測(cè)),然后清除垃圾(垃圾回收)。
將引用計(jì)數(shù)為0的全都打上標(biāo)記,等待GC循環(huán)檢測(cè)回收
4.分代回收
分代技術(shù)簡(jiǎn)單點(diǎn)說(shuō)就是:對(duì)象存在時(shí)間越長(zhǎng),越可能不是垃圾,應(yīng)該越少去收集。
這樣的思想,可以減少標(biāo)記-清除機(jī)制所帶來(lái)的額外操作,極大提高效率。
總結(jié)
以上是生活随笔為你收集整理的Python垃圾收集机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工业级POE交换机、企业级交换机、普通交
- 下一篇: PoE交换机可以当普通交换机吗?