python的存儲機制

Python是如何進行內存管理的?

答:一對象的引用計數機制,二垃圾回收機制,三內存池機制

一、對象的引用計數機制

Python內部使用引用計數,來保持追蹤內存中的對象,所有對象都有引用計數。

引用計數增加的情況:

1,對象被創建:x=4

2,作爲容器對象的一個元素:a=[1,x,‘33’]

3,被作爲參數傳遞給函數:foo(x)
引用計數減少的情況:

1,對象的別名被顯式的銷燬:del x ;或者del y

2,引用超出作用域。比如上面的foo(x)函數結束時,x指向的對象引用減1。

sys.getrefcount( )函數可以獲得對象的當前引用計數。

二、垃圾回收

當一個對象的引用計數歸零時,它將被垃圾收集機制處理掉。

三、內存池機制

Python提供了對內存的垃圾收集機制,但是它將不用的內存放到內存池而不是返回給操作系統。

1,Pymalloc機制。爲了加速Python的執行效率,Python引入了一個內存池機制,用於管理對小塊內存的申請和釋放。

2,Python中所有小於256個字節的對象都使用pymalloc實現的分配器,而大的對象則使用系統的malloc。

3,對於Python對象,如整數,浮點數和List,都有其獨立的私有內存池,對象間不共享他們的內存池。也就是說如果你分配又釋放了大量的整數,用於緩存這些整數的內存就不能再分配給浮點數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章