.
範文
.
1. Python
是如何進行記憶體管理的?
答
:
從三個方面來說
,
一對象的引用計數機制
,
二垃圾回收機制
,
三記憶體池機制
一、對象的引用計數機制
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
。