標籤:收集 關心 被記憶體回收 整數 聲明 出現 儲存 pytho 增加
記憶體管理
包括:
- 變數無須事先聲明
- 變數無須指定類型
- 不用關心記憶體管理
- 變數名會被"回收"
- del 語句能夠直接釋放資源
變數定義
python中, 變數在第一次被賦值時自動聲明, 和其它語言一樣, 變數只有被建立和賦值後才能被使用
動態類型
變數名無須事先聲明, 也無須型別宣告
對象的類型和記憶體佔用都是運行時確定的
記憶體配置
python解譯器會自動進行記憶體管理, 不用開發人員去關心
引用計數
- 要保持追蹤記憶體中的狀態, python使用了引用計數, 就是python內部記錄著所有使用中的對象各有多少引用.
- 一個內部跟蹤變數, 稱為一個引用計數器, 至於每個對象各有多少引用, 簡稱引用計數, 當對象被建立時, 就建立了一個引用計數, 當這個對象不再需要時, 也就是說, 這個對象的引用計數變為0時, 它被記憶體回收
增加引用計數
- 當對象被建立賦值給變數時, 該對象的引用計數就被設定為1
- 當同一個對象又被賦值給其他變數時, 或作為參數傳遞給函數, 方法或類執行個體時, 或者被賦值為一個視窗對象的成員時, 該對象的一個新的引用, 或者作為別名, 就被建立.
減少引用計數
當對象的引用被銷毀時, 引用計數會減少, 明顯的例子就是當引用離開其作用範圍時, 這種情況最經常出現在函數運行結束時, 所有局部變數都被自動銷毀, 對象的引用計數也就減少
垃圾收集
不再被使用的記憶體會被一種稱為垃圾收集的機制釋放
注: 解譯器跟蹤對象的引用計數, 記憶體回收機制負責釋放記憶體, 垃圾收集器是一塊獨立代碼, 它用來尋找引用計數為0的對象, 它也負責檢查雖然引用計數大於0但是也應該被銷毀的對象
引用語義: python中在變數裡儲存值(對象)的引用, 採用這種方式, 變數所需的儲存空間大小一致, 因為其只需要儲存一個引用
值語義變數的值直接儲存在變數的儲存區裡, 這樣一個整數類型的變數就需要儲存一個整數所需的空間, 一個浮點數變數就需要足夠的空間儲存一個浮點數. C中就是值語義
python 記憶體管理