Python 垃圾回收機制

python 中垃圾回收有三種策略:

1.引用計數

2.標記-清除.

3.分代,收集


引用計數,相當於C++中的智能指針,python中是以對象爲一個單位,每個單位中會維護一個計數器,當定義,創建或引用變量時,計數器會加1,當刪除變量引用時計數器會減一。當計數值爲0的時候,釋放內存。

由於存在循環引用的問題,因此引入了標記-清除策略,該策略首先確定一個節點(當前不會被回收的節點,一般爲全局對象),將它置到可達列表中,遍歷可達列表,在可達列表中選取一個節點,把該節點引用過的其他節點也置到可達節點當中,直到可達列表不再增加爲止,標記結束,回收不可達節點。

爲了提高標記-清除的效率,提出了分代-收集策略,基本思想是:那些長時間在內存中的變量應該比較晚的收回。維護三代,默認爲700、10、10,這些數字表示每一代中最多保存的變量數目。當1代超過閾值,回收1.2.3代,當2代超過閾值回收2.3.當3代超過閾值,回收3.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章