當前位置:成語大全網 - 新華字典 - python的內存駐留機制(小數據池)

python的內存駐留機制(小數據池)

python的內存駐留機制,是壹種節省內存的方案,它將int, str, bool類型的數據做成小數據池。當程序要創建字符串等對象前會先檢查池中是否有滿足的字符串。

駐留機制節省大量的重復內存。在內部,小數據池是由壹個全局的dict 維護,該字典中的對象成了單例模式,從而節省內存。

變量 interned 就是全局存放字符串池的字典的變量名 interned = PyDict_New() ,為了讓 intern 機制中的字符串不被回收,設置字典時 PyDict_SetDefault(interned, s, s); 將字符串作為鍵同時也作為值進行設置,這樣對於字符串對象的引用計數就會進行兩次 +1 操作,這樣存於字典中的對象在程序結束前永遠不會為 0,這也是 y_REFCNT(s) -= 2; 將計數減 2 的原因。

從函數參數中可以看到其實字符串對象還是被創建了,內部其實始終會為字符串創建對象,但經過 inter 機制檢查後,臨時創建的字符串會因引用計數為 0 而被銷毀,臨時變量在內存中曇花壹現然後迅速消失。

指定要駐留的字符串:

為什麽要進行字符串駐留呢?

總結:

系統維護壹個interned全局字典,記錄已被駐留的字符串對象,當新字符串a對象需要駐留時,先在interned中查找是否存在,若存在則指向已存在的字符串對象,a對象的引用計數減1,若不存在,則記錄a對象到interned中。