python的内存管理机制及调优手段_Python的内存管理机制及调优手段
內存管理機制:引用計數、垃圾回收、內存池
引用計數:
引用計數是一種非常高效的內存管理手段,當一個Python對象引用時其引用計數加一,當其不再被一個變量引用時則減一。當引用計數等于0時對象被刪除。
1.引用計數:
引用計數也是一種垃圾收集機制,而且也是一種最直觀,最簡單的垃圾收集技術。當 Python 的某個對象的引用計數降為 0 時,說明沒有任何引用指向該對象,該對象就成為要被回收的垃圾了。比如某個新建對象,它被分配給某個引用,對象的引用計數變為 1。如果引用被刪除,對象的引用計數為 0,那么該對象就可以被垃圾回收。不過如果出現循環引用的話,引用計數機制就不再起有效的作用了。
2.標記清除:
如果兩個對象的引用計數都為1,但是僅僅存在他們之間的循環引用,那么這兩個對象都是需要被回收的。也就是說,他們的引用計數雖然表現為非0,但是實際上有效的引用計數為0.所以現將循環引用摘掉,就會得出這兩個對象的有效計數。
3、分代收集
經過上面的【標記-清理】方法,已經可以保證對垃圾的回收了,但還有一個問題,【標記-清理】什么時候執行比較好呢,是對所有對象都同時執行嗎?
同時執行很顯然不合理,我們知道,存活越久的對象,說明他的引用更持久(好像是個屁話,引用不持久就被刪除了),為了更合理的進行【標記-刪除】,就需要對對象進行分代處理,思路很簡單:
1、新創建的對象做為0代
2、每執行一個【標記-刪除】,存活的對象代數就+1
3、代數越高的對象(存活越持久的對象),進行【標記-刪除】的時間間隔就越長。這個間隔,江湖人稱閥值
4.調優手段(了解)
1.手動垃圾回收
2.調高垃圾回收閾值
3.避免循環引用(手動解循環引用和使用弱引用)
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python的内存管理机制及调优手段_Python的内存管理机制及调优手段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 张恒个人资料简介 张恒简单介绍
- 下一篇: 苹果手机怎么设置拍照没有声音