Python內(nèi)存管理
[TOC]
垃圾回收
動態(tài)語言:
- 對象和類型和內(nèi)存都是運行是確定(內(nèi)存地址分配是在運行是自動判斷變量類型并對變量賦值)
引用計數(shù)
- 每個對象都維護一個指向該對象的引用計數(shù)
a = 1
b = 1
id(a) = 內(nèi)存地址數(shù)
id(b) = 相同的內(nèi)存地址數(shù)
- Python只會緩存整數(shù)和短小的字符也物,對于其它非整數(shù)和短小的字符的對象监婶,創(chuàng)建一個新的對象
a = 'this is a string'
b = a
print (a is b)
#return False
- 引用計數(shù)
- 使用`from sys import getrefcount`導入包
- 需要注意的是,當使用某個引用作為參數(shù)鲤妥,傳遞給getrefcount()時歌溉,參數(shù)實際上創(chuàng)建了一個臨時的引用云芦。因此厘擂,getrefcount()所得到的結(jié)果,會比期望的多1
- 對象引用對象
Python的一個容器對象(container)嚼吞,比如表盒件、詞典等,可以包含多個對象舱禽。實際上炒刁,容器對象中包含的并不是元素對象本身,是指向各個元素對象的引用誊稚。