python內存管理


內存管理

包括:

  • 變量無須事先聲明
  • 變量無須指定類型
  • 不用關心內存管理
  • 變量名會被"回收"
  • del 語句能夠直接釋放資源

變量定義

python中, 變量在第一次被賦值時自動聲明, 和其它語言一樣, 變量只有被創建和賦值后才能被使用

動態類型

變量名無須事先聲明, 也無須類型聲明
對象的類型和內存占用都是運行時確定的

內存分配

python解釋器會自動進行內存管理, 不用開發人員去關心

引用計數

  • 要保持追蹤內存中的狀態, python使用了引用計數, 就是python內部記錄着所有使用中的對象各有多少引用.
  • 一個內部跟蹤變量, 稱為一個引用計數器, 至於每個對象各有多少引用, 簡稱引用計數, 當對象被創建時, 就創建了一個引用計數, 當這個對象不再需要時, 也就是說, 這個對象的引用計數變為0時, 它被垃圾回收

增加引用計數

  • 當對象被創建賦值給變量時, 該對象的引用計數就被設置為1
  • 當同一個對象又被賦值給其他變量時, 或作為參數傳遞給函數, 方法或類實例時, 或者被賦值為一個窗口對象的成員時, 該對象的一個新的引用, 或者作為別名, 就被創建.

減少引用計數

當對象的引用被銷毀時, 引用計數會減少, 明顯的例子就是當引用離開其作用范圍時, 這種情況最經常出現在函數運行結束時, 所有局部變量都被自動銷毀, 對象的引用計數也就減少

垃圾收集

不再被使用的內存會被一種稱為垃圾收集的機制釋放
注: 解釋器跟蹤對象的引用計數, 垃圾回收機制負責釋放內存, 垃圾收集器是一塊獨立代碼, 它用來尋找引用計數為0的對象, 它也負責檢查雖然引用計數大於0但是也應該被銷毀的對象


  • 引用語義: python中在變量里保存值(對象)的引用, 采用這種方式, 變量所需的存儲空間大小一致, 因為其只需要保存一個引用
  • 值語義變量的值直接保存在變量的存儲區里, 這樣一個整數類型的變量就需要保存一個整數所需的空間, 一個浮點數變量就需要足夠的空間存儲一個浮點數. C中就是值語義


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM