Python的記憶體管理

2021-10-10 18:55:09 字數 936 閱讀 5954

首先 記憶體管理在wiki上的定義為:記憶體管理是應用於計算機記憶體的一種資源管理形式。記憶體管理的基本要求是提供一種方法,可根據它們的請求為程式動態分配記憶體的一部分,並在不再需要時將其釋放以供重用。

那麼, 簡單的理解的話,記憶體管理就是控制記憶體的釋放和記憶體的分配

在看完了python官方文件後, 得出了兩個小結論

python通過內部的python記憶體管理器來管理乙個包含所有python物件和資料結構的堆

不同資料結構在堆中的記憶體管理方式不一樣

原始碼貼的實現層次如圖(原始碼過於難啃)

這樣子的說明可能還有點雲裡霧裡, 但是如果結合python的實現方式就可以清楚了, python語言的特點就是萬物皆物件, 在python實現的c的原始碼中, 所有的資料結構都繼承自乙個pyobject的類, 並且這個類僅包含物件的引用計數和指向相應型別物件的指標。

這樣子配合就好理解了,引用計數器就是用來管理記憶體的釋放, 指向相應型別物件的指標就是用來選擇對應的記憶體分配器來分配記憶體

其中, 這個相應型別物件就是c的另外乙個struct, 比如說dict, list等等

就像在python記憶體管理中的圖, 當我們在寫**的時候, python會先變成cpython, 這部分就是python的記憶體管理, 那麼, cpython又是怎麼進行記憶體管理的呢?

使用堆分配記憶體, 滿足python動態語言的特點; 使用引用計數器實現自動**記憶體, 而不用像c一樣手動**記憶體

python官方連線

real python

python中的記憶體管理和示例

記憶體分配原始碼位址

Python的記憶體管理

最近在學deeplearning相關的內容,找到了deeplearning.net這個 上面的tutorial主要是介紹深度學習演算法,上面的實現是用python語言,用到的庫主要有numpy和theano。numpy大家比較熟悉了,不再細說 theano是乙個進行數學計算的庫,使用者可以更好的定義...

Python的記憶體管理

學習一門語言前,肯定是先學習這門語言的變數。要想深入了解這門語言,變數在記憶體中的管理尤其重要。python中變數的定義和宣告是很隨意的,你可以在任何你想要開始使用變數的時候去定義吧,這和c有區別。而且宣告變數的時候無需指定變數型別,它的型別會在變數賦值的時候由python內部的直譯器確定。注意,p...

python的記憶體管理

1 小資料池 2 垃圾 機制 2.1 引用計數 每個物件都保留著一塊空間,來追蹤到底有多少引用指向了這個物件,如果我們程式中的乙個變數或其他物件引用了目標物件,python將會增加這個計數值 而當程式停止使用這個物件,則python會減少這個計數值。一旦計數值被減到零,python將會釋放這個物件以...