最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python小白垃圾回收機(jī)制入門

 更新時間:2020年06月09日 15:12:18   作者:silencement  
在本篇文章里小編給大家分享的是關(guān)于Python小白垃圾回收機(jī)制入門的相關(guān)知識點,需要的朋友們可以參考下。

引用計數(shù)

Python默認(rèn)的垃圾收集機(jī)制是“引用計數(shù)”,每個對象維護(hù)了一個ob_ref字段。它的優(yōu)點是機(jī)制簡單,當(dāng)新的引用指向該對象時,引用計數(shù)加1,當(dāng)一個對象的引用被銷毀時減1,一旦對象的引用計數(shù)為0,該對象立即被回收,所占用的內(nèi)存將被釋放。它的缺點是需要額外的空間維護(hù)引用計數(shù),不過最主要的問題是它不能解決“循環(huán)引用”。

什么是循環(huán)引用?A和B相互引用而再沒有外部引用A與B中的任何一個,它們的引用計數(shù)雖然都為1,但顯然應(yīng)該被回收,例子:

a = { } # a 的引用為 1
b = { } # b 的引用為 1
a['b'] = b # b 的引用增 1,b的引用為2
b['a'] = a # a 的引用增 1,a的引用為 2
del a # a 的引用減 1,a的引用為 1
del b # b 的引用減 1, b的引用為 1

在這個例子中,del語句減少了 a 和 b 的引用計數(shù)并刪除了用于引用的變量名,可是由于兩個對象各包含一個對方對象的引用,雖然最后兩個對象都無法通過名字訪問了,但引用計數(shù)并沒有減少到零。因此這個對象不會被銷毀,它會一直駐留在內(nèi)存中,這就造成了內(nèi)存泄漏。為了解決循環(huán)引用問題,Python引入了標(biāo)記-清除和分代回收兩種GC機(jī)制。

標(biāo)記清除

標(biāo)記——清除(Mark——Sweep)是一種基于追蹤(Tracing)回收技術(shù)實現(xiàn)的垃圾回收算法,對象之間通過引用(指針)連在一起,構(gòu)成一個有向圖,對象構(gòu)成這個有向圖的節(jié)點,而引用關(guān)系構(gòu)成這個有向圖的邊。從根對象(root object)出發(fā),沿著有向邊遍歷對象,可達(dá)的對象標(biāo)記為有用的對象,不可達(dá)的對象就是要被清除的對象。所謂根對象就是一些全局引用對象和函數(shù)棧中的引用,這些引用所引用的對象是不可被刪除的。

標(biāo)記清除算法作為Python的輔助垃圾收集技術(shù)主要處理的是一些容器對象,比如list、dict、tuple,instance等,因為對于字符串、數(shù)值對象是不可能造成循環(huán)引用問題。Python使用一個雙向鏈表將這些容器對象組織起來。

分代回收

分代回收是一種以空間換時間的操作方式,Python將內(nèi)存根據(jù)對象的存活時間劃分為不同的集合,每個集合稱為一個代,Python將內(nèi)存分為了3“代”,分別為年輕代(第0代)、中年代(第1代)、老年代(第2代),他們對應(yīng)的是3個鏈表,它們的垃圾收集頻率與對象的存活時間的增大而減小。新創(chuàng)建的對象都會分配在年輕代,年輕代鏈表的總數(shù)達(dá)到上限時,Python垃圾收集機(jī)制就會被觸發(fā),把那些可以被回收的對象回收掉,而那些不會回收的對象就會被移到中年代去,依此類推,老年代中的對象是存活時間最久的對象,甚至是存活于整個系統(tǒng)的生命周期內(nèi)。同時,分代回收是建立在標(biāo)記清除技術(shù)基礎(chǔ)之上。

分代回收同樣作為Python的輔助垃圾收集技術(shù)處理那些容器對象。

實例擴(kuò)展:

引用計數(shù)實例

import sys
class A():
 def __init__(self):
  '''初始化對象'''
  print('object born id:%s' %str(hex(id(self))))
 def f1():
 '''循環(huán)引用'''
 while True:
  c1=A()
  c2=A()
  c1.t=c2
  c2.t=c1
  del c1
  del c2

到此這篇關(guān)于Python小白垃圾回收機(jī)制入門的文章就介紹到這了,更多相關(guān)Python垃圾回收機(jī)制詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python進(jìn)行圖片相似度對比的兩種實現(xiàn)方法

    python進(jìn)行圖片相似度對比的兩種實現(xiàn)方法

    Python提供了一些庫和工具可以用于圖片的相似度比對,本文就詳細(xì)的介紹了兩種實現(xiàn)方法,感知哈希和結(jié)構(gòu)相似性,下面就來介紹一下,感興趣的可以了解一下
    2023-10-10
  • Django 實現(xiàn)Admin自動填充當(dāng)前用戶的示例代碼

    Django 實現(xiàn)Admin自動填充當(dāng)前用戶的示例代碼

    今天小編就為大家分享一篇Django 實現(xiàn)Admin自動填充當(dāng)前用戶的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python利用Pillow(PIL)庫實現(xiàn)驗證碼圖片的全過程

    Python利用Pillow(PIL)庫實現(xiàn)驗證碼圖片的全過程

    這篇文章主要給大家介紹了關(guān)于Python利用Pillow(PIL)庫實現(xiàn)驗證碼圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Python如何讀取、寫入JSON數(shù)據(jù)

    Python如何讀取、寫入JSON數(shù)據(jù)

    這篇文章主要介紹了Python如何讀取、寫入JSON數(shù)據(jù),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python實現(xiàn)推送百度鏈接的示例代碼

    Python實現(xiàn)推送百度鏈接的示例代碼

    有時為了提高搜索效率,也讓搜索引擎更容易發(fā)現(xiàn)自己的文章,我們需要將文章鏈接推送到百度站長平臺,起到快速收錄的目的。本文將主要介紹如何通過Python實現(xiàn)這一功能,需要的可以參考一下
    2021-12-12
  • 在Python下嘗試多線程編程

    在Python下嘗試多線程編程

    這篇文章主要介紹了在Python下多線程編程的嘗試,由于GIL的存在,多線程在Python開發(fā)領(lǐng)域一直是個熱門問題,需要的朋友可以參考下
    2015-04-04
  • python編寫網(wǎng)頁爬蟲腳本并實現(xiàn)APScheduler調(diào)度

    python編寫網(wǎng)頁爬蟲腳本并實現(xiàn)APScheduler調(diào)度

    爬蟲爬的頁面是京東的電子書網(wǎng)站頁面,每天會更新一些免費的電子書,爬蟲會把每天更新的免費的書名以第一時間通過郵件發(fā)給我,通知我去下載
    2014-07-07
  • 使用Django的JsonResponse返回數(shù)據(jù)的實現(xiàn)

    使用Django的JsonResponse返回數(shù)據(jù)的實現(xiàn)

    這篇文章主要介紹了使用Django的JsonResponse返回數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python實現(xiàn)的批量修改文件后綴名操作示例

    Python實現(xiàn)的批量修改文件后綴名操作示例

    這篇文章主要介紹了Python實現(xiàn)的批量修改文件后綴名操作,涉及Python目錄文件的遍歷、重命名等相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python繪制七彩花朵(用Turtle)

    Python繪制七彩花朵(用Turtle)

    這篇文章主要給大家介紹了關(guān)于Python使用Turtle繪制七彩花朵的相關(guān)資料,通過本文介紹的方法就算剛?cè)腴T的朋友也可以很快的入手繪制出漂亮的七彩花朵,需要的朋友可以參考下
    2023-07-07

最新評論

阿巴嘎旗| 浙江省| 蓝山县| 新蔡县| 增城市| 淮北市| 佛坪县| 和平县| 和田县| 永州市| 新疆| 湘阴县| 呼伦贝尔市| 衡山县| 彭阳县| 湖北省| 兴义市| 宽甸| 湘潭市| 昂仁县| 玉田县| 浦江县| 浮梁县| 普格县| 综艺| 巴林右旗| 海伦市| 龙门县| 凉山| 巴里| 武冈市| 双峰县| 兴国县| 宜春市| 大余县| 广德县| 准格尔旗| 关岭| 延庆县| 申扎县| 广西|