Python對(duì)象循環(huán)引用垃圾回收算法詳情
來介紹一下 Python 是采用何種途徑解決循環(huán)引用問題的。
上圖中,表示的是對(duì)象之間的引用關(guān)系,從自對(duì)象指向他對(duì)象的引用用黑色箭頭表示。每個(gè)對(duì)象里都有計(jì)數(shù)器。 而圖中右側(cè)部分可以很清晰的看到是循環(huán)引用的垃圾對(duì)象。
上圖,將每個(gè)對(duì)象的引用計(jì)數(shù)器復(fù)制到自己的另一個(gè)存儲(chǔ)空間中。
上圖其實(shí)和圖二沒什么區(qū)別,只不過更清晰了。因?yàn)閷?duì)象本來就是由對(duì)象鏈表連接的。只不過是把對(duì)象鏈表畫了出來。
上圖中,將新復(fù)制的計(jì)數(shù)器都進(jìn)行了減量的操作。先不要管為什么,繼續(xù)往下看。但是可以看到,由根直接引用的對(duì)象中,新復(fù)制的計(jì)數(shù)器并沒有減量。以上操作執(zhí)行完畢后,再把對(duì)象分為可能到達(dá)的對(duì)象鏈表和不可能到達(dá)的對(duì)象鏈表。
之后將具備如下條件的對(duì)象連接到“可能到達(dá)對(duì)象的鏈表”。
經(jīng)過 (4) 的減量操作后計(jì)數(shù)器值大于等于 1。有從活動(dòng)對(duì)象的引用。
再將具備如下條件的對(duì)象連接到“不可能到達(dá)對(duì)象的鏈表”。
經(jīng)過 (4) 的減量操作后計(jì)數(shù)器值為 0沒有從活動(dòng)對(duì)象的引用
現(xiàn)在上圖顯示的就是垃圾對(duì)象鏈表和活動(dòng)對(duì)象的鏈表了。接下來的步驟就是釋放不可能到達(dá)的對(duì)象,再把可能到達(dá)的對(duì)象連接到對(duì)象鏈表。
這樣,Python中只要將“部分標(biāo)記-清除算法”稍加變形,就解決了循環(huán)引用問題。
到此這篇關(guān)于Python對(duì)象循環(huán)引用垃圾回收算法詳情的文章就介紹到這了,更多相關(guān)Python對(duì)象循環(huán)引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 多個(gè)圖同時(shí)在不同窗口顯示的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python 多個(gè)圖同時(shí)在不同窗口顯示的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07python+django快速實(shí)現(xiàn)文件上傳
本篇文章主要介紹了django快速實(shí)現(xiàn)文件上傳,通過django web框架來實(shí)現(xiàn)一些簡單的功能,有需要的可以了解一下。2016-10-10如何解決import torchvision報(bào)錯(cuò)問題 DLL:找不到模塊
這篇文章主要介紹了如何解決import torchvision報(bào)錯(cuò)問題 DLL:找不到模塊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01使用Python字符串訪問與修改局部變量的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用Python字符串訪問與修改局部變量,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06Python實(shí)現(xiàn)數(shù)據(jù)集劃分(訓(xùn)練集和測試集)
這篇文章主要為大家詳細(xì)介紹了Python是如何實(shí)現(xiàn)數(shù)據(jù)集劃分的,分為訓(xùn)練集和測試集,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的小伙伴可以了解一下2023-05-05Python程序打包exe報(bào)錯(cuò)的幾種解決方法
本文主要介紹了Python程序打包exe報(bào)錯(cuò)的幾種解決方法,文中通過幾種解決方法的介紹非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2023-08-08Python 爬取淘寶商品信息欄目的實(shí)現(xiàn)
這篇文章主要介紹了Python 爬取淘寶商品信息欄目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02