Python對(duì)象循環(huán)引用垃圾回收算法詳情
來(lái)介紹一下 Python 是采用何種途徑解決循環(huán)引用問(wèn)題的。

上圖中,表示的是對(duì)象之間的引用關(guān)系,從自對(duì)象指向他對(duì)象的引用用黑色箭頭表示。每個(gè)對(duì)象里都有計(jì)數(shù)器。 而圖中右側(cè)部分可以很清晰的看到是循環(huán)引用的垃圾對(duì)象。

上圖,將每個(gè)對(duì)象的引用計(jì)數(shù)器復(fù)制到自己的另一個(gè)存儲(chǔ)空間中。

上圖其實(shí)和圖二沒(méi)什么區(qū)別,只不過(guò)更清晰了。因?yàn)閷?duì)象本來(lái)就是由對(duì)象鏈表連接的。只不過(guò)是把對(duì)象鏈表畫(huà)了出來(lái)。

上圖中,將新復(fù)制的計(jì)數(shù)器都進(jìn)行了減量的操作。先不要管為什么,繼續(xù)往下看。但是可以看到,由根直接引用的對(duì)象中,新復(fù)制的計(jì)數(shù)器并沒(méi)有減量。以上操作執(zhí)行完畢后,再把對(duì)象分為可能到達(dá)的對(duì)象鏈表和不可能到達(dá)的對(duì)象鏈表。
之后將具備如下條件的對(duì)象連接到“可能到達(dá)對(duì)象的鏈表”。
經(jīng)過(guò) (4) 的減量操作后計(jì)數(shù)器值大于等于 1。有從活動(dòng)對(duì)象的引用。
再將具備如下條件的對(duì)象連接到“不可能到達(dá)對(duì)象的鏈表”。
經(jīng)過(guò) (4) 的減量操作后計(jì)數(shù)器值為 0沒(méi)有從活動(dòng)對(duì)象的引用

現(xiàn)在上圖顯示的就是垃圾對(duì)象鏈表和活動(dòng)對(duì)象的鏈表了。接下來(lái)的步驟就是釋放不可能到達(dá)的對(duì)象,再把可能到達(dá)的對(duì)象連接到對(duì)象鏈表。

這樣,Python中只要將“部分標(biāo)記-清除算法”稍加變形,就解決了循環(huán)引用問(wèn)題。
到此這篇關(guān)于Python對(duì)象循環(huán)引用垃圾回收算法詳情的文章就介紹到這了,更多相關(guān)Python對(duì)象循環(huán)引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
分享一個(gè)pycharm專(zhuān)業(yè)版安裝的永久使用方法
這篇文章主要介紹了分享一個(gè)pycharm專(zhuān)業(yè)版安裝的永久使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
python 實(shí)現(xiàn)Requests發(fā)送帶cookies的請(qǐng)求
這篇文章主要介紹了python 實(shí)現(xiàn)Requests發(fā)送帶cookies請(qǐng)求的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02
基于Python實(shí)現(xiàn)成語(yǔ)填空游戲的示例代碼
成語(yǔ)填空想必大家都是十分熟悉的了,特別是有在上小學(xué)的家長(zhǎng)肯定都有十分深刻的印象。當(dāng)然了你也別小看了成語(yǔ)調(diào)控小游戲,有的時(shí)候知識(shí)儲(chǔ)備不夠,你還真的不一定猜得出來(lái)是什么。本文就來(lái)用Python編寫(xiě)一個(gè)簡(jiǎn)單的成語(yǔ)填空游戲,感興趣的可以了解下2023-02-02
python3調(diào)用ansible?api使用實(shí)例例說(shuō)明
這篇文章主要為大家介紹了python3?調(diào)用ansible?api使用說(shuō)明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Python中的 ansible 動(dòng)態(tài)Inventory 腳本
這篇文章主要介紹了Python中的 ansible 動(dòng)態(tài)Inventory 腳本,本章節(jié)通過(guò)實(shí)例代碼從mysql數(shù)據(jù)作為數(shù)據(jù)源生成動(dòng)態(tài)ansible主機(jī)為入口介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2020-01-01
Python hashlib庫(kù)數(shù)據(jù)安全加密必備指南
這篇文章主要為大家介紹了Python hashlib庫(kù)數(shù)據(jù)安全加密的使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python實(shí)現(xiàn)學(xué)生管理系統(tǒng)開(kāi)發(fā)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)學(xué)生管理系統(tǒng)開(kāi)發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
python實(shí)現(xiàn)的分析并統(tǒng)計(jì)nginx日志數(shù)據(jù)功能示例
這篇文章主要介紹了python實(shí)現(xiàn)的分析并統(tǒng)計(jì)nginx日志數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了Python針對(duì)nginx日志ip、訪問(wèn)url、狀態(tài)等數(shù)據(jù)的相關(guān)讀取、解析操作技巧,需要的朋友可以參考下2019-12-12
Python批量啟動(dòng)多線(xiàn)程代碼實(shí)例
這篇文章主要介紹了python批量啟動(dòng)多線(xiàn)程代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02

