日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

简述python垃圾回收机制_python中的垃圾回收机制简述

發(fā)布時間:2024/10/8 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简述python垃圾回收机制_python中的垃圾回收机制简述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2020年12月5日21:47:35 王凱玉

python中的垃圾回收機(jī)制

引用計數(shù)

# 引用計數(shù)

引用計數(shù)是編程語言中的一中內(nèi)存管理技術(shù),可以將資源的被引用次數(shù)保存起來。

當(dāng)引用計數(shù)為0時,資源將被釋放

# 如何讓引用計數(shù)減少

del語句會刪除對象的一個引用,這將導(dǎo)致該引用指向的對象的引用計數(shù)-1

# 引用計數(shù)會導(dǎo)致什么問題

由于兩個或多個對象相互引用時,彼此引用計數(shù)不為0,造成循環(huán)引用無法回收,但是可以用標(biāo)記清除機(jī)制來解決。

# 如何查看引用計數(shù)

import sys

sys.getrefcount(obj)

標(biāo)記清除

# 標(biāo)記清除

標(biāo)記清除分為兩個階段:先標(biāo)記對象(垃圾檢測)、再清除垃圾(垃圾回收)

# 標(biāo)記

在這個階段,垃圾回收器會先從根對象開始遍歷,每一個可以從根對象訪問到的對象都會被添加標(biāo)記,這個對象就會被標(biāo)識為可到達(dá)對象(不會被清除)

# 清除

這時候,垃圾回收器就會對堆內(nèi)存從頭到尾進(jìn)行線性遍歷,如果發(fā)現(xiàn)有對象沒有被標(biāo)識成可多達(dá)對象,就會把該對象回收,之后再講原來標(biāo)記為可到達(dá)對象的標(biāo)識抹掉,以便進(jìn)行下一次的垃圾回收操作。

# 標(biāo)記清除有什么問題

標(biāo)記清除算法最大的缺點(diǎn)就是垃圾收集后有可能造成大量的內(nèi)存碎片,其次就是,由當(dāng)遍歷的內(nèi)存節(jié)點(diǎn)較多時,每次回收都會花費(fèi)很多的時間在遍歷上。

# 常見的名詞

collector:垃圾收集器

mutator:垃圾收集器之外的部分,比如當(dāng)前的應(yīng)用程序

mutator roots:是mutator的根對象,通常是分配在對內(nèi)存之外,可以直接被訪問到的對象,一般就是指靜態(tài)的全局變量。

可到達(dá)對象:從根對象開始遍歷,可以訪問到的對象,也就是mutator正在使用的對象。

分代回收

# 分代回收

分代回收是一種典型的以空間換時間的技術(shù)。

簡單說就是把回收對象分成多個代,比如青年代、中年代、老年代。每一個代都是一個集合。

當(dāng)青年代滿了的時候,就會對所有代執(zhí)行標(biāo)記清除動作,中年代滿了,就會清理中年代和老年代,老年代滿了只會清理自己(老年代的存活時間是最長的)

總結(jié)

以上是生活随笔為你收集整理的简述python垃圾回收机制_python中的垃圾回收机制简述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。