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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python内存的回收机制_简单介绍python的垃圾回收机制

發布時間:2023/12/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python内存的回收机制_简单介绍python的垃圾回收机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要介紹了python垃圾回收機制的相關資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

什么是垃圾回收機制?

首先,咱先來解釋名詞,垃圾回收是不是就是將沒用的,廢棄的東西回收起來。

在座的各位都沒有女朋友對吧,那難以想象你們的房間會是一個什么樣子,可能會有很多垃圾,很凌亂,自己也不收拾。那當你有了女朋友了就不一樣了,她會幫你收拾房間,把沒用的垃圾都給你扔掉。

那在我們Python當中的垃圾回收承擔的就是女朋友的角色,你們想象一下,你現在有一個輕度強迫癥的女朋友一刻不停的跟在你的背后打掃衛生,你一放下臟碟子或者垃圾什么的,就已經幫你清理、打掃了

所以垃圾回收機制就是自動幫助我們管理內存,清理垃圾的一種工具

垃圾回收機制有什么用?

那我們現在先來想一想,我們平時在寫程序的時候是不是會定義一些變量名,那這些變量名都是存在哪些地方呢?是不是都是存在內存里面,那當我們一直不停的定義變量是不是就會使我們內存空間的占有率增加,那我們的垃圾回收機制就會將一些沒用的名字,沒用的垃圾自動的回收起來。

識別垃圾對象,從垃圾對象那里回收內存

怎么進行垃圾回收

在我們Python當中采用的是引用計數機制為主,分代收集機制為輔的策略。

1、引用計數

在Python中,大多數對象的生命周期都是通過對象的引用計數來管理的。從廣義上來講,引用計數也是一種垃圾收集機制,而且也是一種最直觀,最簡單的垃圾收集技術。

引用計數的原理:

當一個對象的引用被創建或者復制時,對象的引用計數加1;

當一個對象的引用被銷毀時,對象的引用計數減1;

當對象的引用計數減少為0時,就意味著對象已經沒有被任何人使用了,可以將其所占用的內存釋放了。

引用計數有一個致命的弱點就是是循環引用(也稱交叉應用)。

循環引用可以使一組對象的引用計數不為0,然而這些對象實際上并沒有被任何外部對象所引用,它們之間只是相互引用。

這意味著不會再有人使用這組對象,應該回收這組對象所占用的內存空間,然后由于相互引用的存在,每一個對象的引用計數都不為0,因此這些對象所占用的內存永遠不會被釋放。

優點:

簡單、直觀

實時性,只要沒有了引用就釋放資源。

缺點:

維護引用計數需要消耗一定的資源

循環應用時,無法回收。也正是因為這個原因,才需要通過標記-清理和分代收集機制來輔助引用計數機制。

2、標記-清除

“標記-清除”是為了解決循環引用的問題。可以包含其他對象引用的容器對象(比如:list,set,dict,class,instance)都可能產生循環引用。

標記-清除原理:

“標記-清除”不改動真實的引用計數,而是將集合中對象的引用計數復制一份副本,改動該對象引用的副本。對于副

本做任何的改動,都不會影響到對象生命走期的維護。

3、分代回收

分代回收原理:

將系統中的所有內存塊根據其存活時間劃分為不同的集合,每一個集合就成為一個“代”,垃圾收集的頻率隨著“代”的存活時間的增大而減小。

也就是說,活得越長的對象,就越不可能是垃圾,就應該減少對它的垃圾收集頻率。那么如何來衡量這個存活時間:通常是利用幾次垃圾收集動作來衡量,如果一個對象經過的垃圾收集次數越多,可以得出:該對象存活時間就越長。

原文來自:https://www.jb51.net/article/196603.htm

本文地址:https://www.linuxprobe.com/take-python-linux.html編輯:向金平,審核員:逄增寶

Linux命令大全:https://www.linuxcool.com/

總結

以上是生活随笔為你收集整理的python内存的回收机制_简单介绍python的垃圾回收机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。