
很多人都知道Go語言有垃圾回收,但其實Python編程語言也有,垃圾回收簡稱‘GC機制’,當內存不再需要時,應及時釋放,這種行為,被叫做“垃圾回收”,如果你還不了解,請看下文:
垃圾回收
其實對于Python開發者來說,日常是不需要關注內存管理和垃圾回收的,因為CPython的解釋器有獨有的機制進行處理,為什么在Python語言中不太需要關注垃圾回收呢?
因為Python自己的解釋器自動做了垃圾回收相應的處理,在絕大部分場景下是不需要人為干涉的,另外,提到Python就會想到開發效率,因為Python是一門膠水語言,在很多場景下,高性能以及內存問題并不凸顯,而且現在服務器資源便宜而人力資源很貴的情況下。
在使用Python做Web開發時,盡管工作了很長時間,也很少會遇到內存管理和垃圾回收的情況,Web應用幾乎都是使用多進程模型的,一則是會有定期超時重啟的機制,二是每次上線的操作也會進程的重啟。所以不會有某個進程長時間的駐留,使其占用很多內存,導致內存泄漏。所以,GC的缺陷基本不太會對Web開發產生很大的影響。
且CPython也足夠完善,基本不太會出現內存泄漏這樣的問題。大部分場景下,都是因為開發者錯誤的使用或者是誤判導致內存占用不正常。
引用計數
Python的垃圾回收是建立在引用計數上的,所以理解它也是非常重要的,引用計數的原理如下:當一個對象的引用被創建或復制時,對象的引用計數加1;當一個對象的引用被銷毀時,對象的引用計數減1;當對象的引用計數減少至0時,也就意味著對象已經沒有被使用了,可以將其所占用的內存立即釋放。
這種機制的特性是,有比較不錯的實用性,但也會有一個循環引用的問題,比如A引用了B,B又引用了A,導致每個對象的引用計數都不為0,那么A和B占用的內存資源將永遠不會被回收。所以就需要一些回收算法來解決這個問題,而Python就是使用了標記清除和分代回收機制。
本文由培訓無憂網千鋒教育專屬課程顧問整理發布,更多Python開發培訓課程歡迎關注培訓無憂網Python開發頻道或添加老師微信:15033336050
注:尊重原創文章,轉載請注明出處和鏈接 http://www.dedgn.cn/news-id-14761.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注python培訓頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050