瀏陽做網(wǎng)站的公司價格我贏seo
Python高級-內(nèi)存管理
第四章 內(nèi)存管理
1、對象池
小整數(shù)池
系統(tǒng)默認創(chuàng)建好的,等著你使用
概述:整數(shù)在程序中的使用非常廣泛,Python為了優(yōu)化速度,使用了小整數(shù)對象池,避免為整數(shù)頻繁申請和銷毀內(nèi)存空間。Python 對小整數(shù)的定義是 [-5, 256] ,這些整數(shù)對象是提前建立好的,不會被垃圾回收。在一個 Python 的程序中,無論這個整數(shù)處于LEGB(局部變量,閉包,全局,內(nèi)建模塊)中的哪個位置,所有位于這個范圍內(nèi)的整數(shù)使用的都是同一個對象。
a = 100
print(id(a))
del a
b = 100
print(id(b))
發(fā)現(xiàn)刪除a后,b的地址依舊是刪除之前的那個地址(是否刪除,小整數(shù)都常駐內(nèi)存)
大整數(shù)池
默認創(chuàng)建出來,池內(nèi)為空的,創(chuàng)建一個就會往池中存儲一個
intern機制
每個單詞(字符串),不夾雜空格或者其他符號,且字符串沒有超過256k,默認開啟intern機制,共享內(nèi)存,靠引用計數(shù)決定是否銷毀
a = 'HelloWorld'
b = 'HelloWorld'
print(a is b)
a = 'Hello World'
b = 'Hello World'
print(a is b)
python中對大于256的整數(shù),會重新分配對象空間地址保存對象;對于字符串來說,如果不包含空格的字符串,則不會重新分配對象空間,對于包含空格的字符串則會重新分配
2、垃圾收集
概述: