python如何進行記憶體管理
關於首先python進行記憶體管理就不得不提到Python直譯器在何種情況下會釋放變數的記憶體。Python引用了記憶體計數這一簡單的計數來控制。當一個變數的引用計數為0的時候,就會被直譯器回收。當然在互動模式下,記憶體不會馬上釋放,重新啟動直譯器就會釋放了。
下面是引用計數的知識:
1) 增加引用計數 當物件被建立並(將其引用)賦值給變數時,該物件的引用計數被設定為1。
物件的引用計數增加的情況:
物件被建立:x = 3.14
另外的別名被建立:y = x
被作為引數傳遞給函式(新的本地引用):foobar(x)
成為容器物件的一個元素:myList = [123, x, 'xyz']
2) 減少引用計數 物件的引用計數減少的情況:
一個本地引用離開了其作用範圍。如foobar()函式結束時
物件的別名被顯式銷燬:del y
物件的一個別名被賦值給其他物件:x = 123
物件被從一個視窗物件中移除:myList.remove(x)
視窗物件本身被銷燬:del myList
3) del語句 Del語句會刪除物件的一個引用,它的語法如下:del obj[, obj2[, ...objN]]
例如,在上例中執行del y會產生兩個結果:
從現在的名稱空間中刪除y
x的引用計數減1
下面我們來試驗一下
import sys x = 3.14 print("原始引用值:", sys.getrefcount(x)) y = x print("被y引用後:", sys.getrefcount(x)) x = 4.0 print("重新賦值後:", sys.getrefcount(x)) del y print("刪除y引用後:", sys.getrefcount(x))
原始引用值: 3 被y引用後: 4 重新賦值後: 3 刪除y引用後: 3
關於python記憶體相關文章推薦閱讀:
(推薦作業系統:windows7系統、Python 3.9.1,DELL G3電腦。)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2618/viewspace-2829869/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python如何進行記憶體管理?Python記憶體
- 技術分享:Python如何進行記憶體管理?Python記憶體
- 在 ArkTS 中,如何有效地進行記憶體管理和避免記憶體洩漏?記憶體
- Python如何管理記憶體?記憶體分配機制是什麼?Python記憶體
- python的記憶體管理Python記憶體
- Python深入 Python的記憶體管理Python記憶體
- 記憶體管理 記憶體管理概述記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- Python分享之Python的記憶體管理Python記憶體
- Python深入06 Python的記憶體管理Python記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- npm打包進行記憶體限制NPM記憶體
- 【記憶體管理】記憶體佈局記憶體
- 教你如何進行 linux swap 交換記憶體擴容Linux記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- 「前端進階」JS中的記憶體管理前端JS記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Go:記憶體管理與記憶體清理Go記憶體
- Python記憶體管理:基本概念與技巧Python記憶體
- Python記憶體管理機制-《原始碼解析》Python記憶體原始碼
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- Java進階10 記憶體管理與垃圾回收Java記憶體
- iOS 進階 - 記憶體管理(八) -- 迴圈引用iOS記憶體
- JavaScript 記憶體管理JavaScript記憶體
- iOS 記憶體管理iOS記憶體
- Android記憶體管理Android記憶體
- OC記憶體管理記憶體
- 記憶體管理-swMemoryGlobal記憶體
- Flink記憶體管理記憶體
- MySQL記憶體管理MySql記憶體
- Android 是如何管理 App 記憶體的 — Android 記憶體優化第二彈AndroidAPP記憶體優化
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- Linux實體記憶體管理Linux記憶體
- iOS 記憶體管理MRCiOS記憶體
- “理解”iOS記憶體管理iOS記憶體
- iOS 記憶體管理研究iOS記憶體
- 01記憶體管理-概述記憶體