Python教程:Python是如何進行內存管理的?
來源:
奇酷教育 發表于:
奇酷教育-Python培訓_Python教程_Python基礎教程
Python 是一門有條理的和強大的面向對象的程序設計語言,類似于Perl, Ruby, Scheme, Java。自從20世紀90年代初Python語言誕生至今,它已被逐漸廣泛應用于系統管理任務的處理和Web編程。今天
qiku將從三個方面來說,一對象的引用計數機制,二垃圾回收機制,三內存池機制。
一、對象的引用計數機制
Python內部使用引用計數,來保持追蹤內存中的對象,所有對象都有引用計數。
引用計數增加的情況:
1,一個對象分配一個新名稱
2,將其放入一個容器中(如列表、元組或字典)
引用計數減少的情況:
1,使用del語句對對象別名顯示的銷毀
2,引用超出作用域或被重新賦值
sys.getrefcount( )函數可以獲得對象的當前引用計數
多數情況下,引用計數比你猜測得要大得多。對于不可變數據(如數字和字符串),解釋器會在程序的不同部分共享內存,以便節約內存。
二、垃圾回收
1,當一個對象的引用計數歸零時,它將被垃圾收集機制處理掉。
2,當兩個對象a和b相互引用時,del語句可以減少a和b的引用計數,并銷毀用于引用底層對象的名稱。然而由于每個對象都包含一個對其他對象的應用,因此引用計數不會歸零,對象也不會銷毀。(從而導致內存泄露)。為解決這一問題,解釋器會定期執行一個循環檢測器,搜索不可訪問對象的循環并刪除它們。
三、內存池機制
Python提供了對內存的垃圾收集機制,但是它將不用的內存放到內存池而不是返回給操作系統。
1,Pymalloc機制。為了加速Python的執行效率,Python引入了一個內存池機制,用于管理對小塊內存的申請和釋放。
2,Python中所有小于256個字節的對象都使用pymalloc實現的分配器,而大的對象則使用系統的malloc。
3,對于Python對象,如整數,浮點數和List,都有其獨立的私有內存池,對象間不共享他們的內存池。也就是說如果你分配又釋放了大量的整數,用于緩存這些整數的內存就不能再分配給浮點數。
Python語言以其靈活、高效性在人工智能領域的作用不言而喻,但其實除人工智能外,Python語言同樣適用于多個發展方向,如Python全棧自動化開發、Linux運維、Python爬蟲開發、金融自動化交易前端開發、
大數據分析和數據挖掘等等。
以上就是
奇酷為大家分享的“
Python教程:Python是如何進行內存管理的?”謝謝大家觀看,如果對Python感興趣的話,想學
Python培訓的,也可以在線咨詢,我們將竭誠為你解答。