欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 垃圾回收機(jī)制詳解

 更新時(shí)間:2021年12月29日 08:37:27   作者:MusicDancing  
這篇文章主要為大家介紹了Python 垃圾回收機(jī)制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

Python 的GC模塊主要運(yùn)用了引用計(jì)數(shù)來(lái)跟蹤和回收垃圾;通過(guò)“標(biāo)記-清除”解決容器對(duì)象可能產(chǎn)生的循環(huán)引用問(wèn)題;通過(guò)分代回收以空間換時(shí)間進(jìn)一步提高垃圾回收的效率。

也即采用“引用計(jì)數(shù)“為主(實(shí)時(shí)性,一旦沒有引用,內(nèi)存就直接釋放了),“標(biāo)記-清除”與“分代收集”兩種機(jī)制為輔的策略。 ???????

1. 引用計(jì)數(shù)

為每一個(gè)對(duì)象維護(hù)一個(gè)引用計(jì)數(shù)器,當(dāng)一個(gè)對(duì)象的引用被創(chuàng)建或者復(fù)制時(shí),(對(duì)象的引用)計(jì)數(shù)器+1,當(dāng)一個(gè)對(duì)象的引用被銷毀時(shí),計(jì)數(shù)器的值-1,當(dāng)計(jì)數(shù)器的值為0時(shí),就意味著對(duì)象已經(jīng)再?zèng)]有被使用了,可以將其內(nèi)存釋放掉。

2. 標(biāo)記-清除

“標(biāo)記-清除”的出現(xiàn)打破了循環(huán)引用,也就是它只關(guān)注那些可能會(huì)產(chǎn)生循環(huán)引用的對(duì)象,Python中的循環(huán)引用總是發(fā)生在容器container對(duì)象之間,也就是能夠在內(nèi)部持有其他對(duì)象的對(duì)象(比如:list、dict、class等)。這也使得該方法帶來(lái)的開銷只依賴于容器對(duì)象的數(shù)量。

原理:

將集合中對(duì)象的引用計(jì)數(shù)復(fù)制一份副本,用于找尋root object集合(該set中的對(duì)象是不能被回收的)。當(dāng)成功找到root object集合,首先將現(xiàn)在的內(nèi)存鏈表一分為二,一條鏈表維護(hù)root object集合,成為root鏈表;另外一條維護(hù)剩下的對(duì)象,成為unreachable鏈表。

一旦在標(biāo)記的過(guò)程中,發(fā)現(xiàn)現(xiàn)在在unreachable鏈表且可能存在被root鏈表中直接或間接引用的對(duì)象,就將其從unreachable鏈表中移到root鏈表中;當(dāng)完成標(biāo)記后,unreachable鏈表中剩下的所有對(duì)象就是垃圾對(duì)象了,接下來(lái)的垃圾回收只需限制在unreachable鏈表中即可。

缺點(diǎn):

該機(jī)制所帶來(lái)的額外操作和需要回收的內(nèi)存塊成正比。

3. 分代回收

活的越長(zhǎng)的對(duì)象,就越不可能是垃圾,就應(yīng)該減少對(duì)它的垃圾收集頻率。

4. 其他

4.1 JNI(Java Native Interface)

提供了若干的API,實(shí)現(xiàn)Java與其他語(yǔ)言的通信。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Python lxml模塊的基本使用方法分析

    Python lxml模塊的基本使用方法分析

    這篇文章主要介紹了Python lxml模塊的基本使用方法,結(jié)合實(shí)例形式分析了Python安裝與使用lxml模塊常見操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-12-12
  • python實(shí)現(xiàn)四舍五入方式

    python實(shí)現(xiàn)四舍五入方式

    這篇文章主要介紹了python實(shí)現(xiàn)四舍五入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • pyinstaller打包找不到文件的問(wèn)題解決

    pyinstaller打包找不到文件的問(wèn)題解決

    這篇文章主要介紹了pyinstaller打包找不到文件的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 基于OpenCV實(shí)現(xiàn)小型的圖像數(shù)據(jù)庫(kù)檢索功能

    基于OpenCV實(shí)現(xiàn)小型的圖像數(shù)據(jù)庫(kù)檢索功能

    下面就使用VLAD表示圖像,實(shí)現(xiàn)一個(gè)小型的圖像數(shù)據(jù)庫(kù)的檢索程序。下面實(shí)現(xiàn)需要的功能模塊,分步驟給大家介紹的非常詳細(xì),對(duì)OpenCV圖像數(shù)據(jù)庫(kù)檢索功能感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Python使用openpyxl復(fù)制整張sheet

    Python使用openpyxl復(fù)制整張sheet

    這篇文章主要介紹了Python使用openpyxl復(fù)制整張sheet,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python使用turtle繪制分形樹

    python使用turtle繪制分形樹

    這篇文章主要為大家詳細(xì)介紹了python使用turtle繪制分形樹的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python檢查URL是否正常訪問(wèn)的小技巧

    python檢查URL是否正常訪問(wèn)的小技巧

    檢查一個(gè)URL是否正常很容易,如果檢查2000個(gè)URL,或者是大批量的URL怎么辦?這篇文章就為大家介紹了python檢查URL是否正常訪問(wèn)的小技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法

    Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法

    今天小編就為大家分享一篇Python實(shí)現(xiàn)高斯函數(shù)的三維顯示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python函數(shù)命名空間和作用域(Local與Global)

    Python函數(shù)命名空間和作用域(Local與Global)

    這篇文章主要介紹了Python函數(shù)命名空間和作用域分別介紹Local與Global模式,內(nèi)容詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • python上下文管理器異常問(wèn)題解決方法

    python上下文管理器異常問(wèn)題解決方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python上下文管理器異常問(wèn)題解決方法,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02

最新評(píng)論