歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python的垃圾回收機制

Python的垃圾回收機制

日期:2017/3/1 9:14:41   编辑:Linux編程

在Python中,一切對象都是引用計數的。當分配一個新的名字給一個對象,或將其放到一個列表、遠足或字典中時,這個對象的引用計數就會增加1。如:

a = 2 #在內存中創建一個對象‘2’,並把名字a指向該對象,該對象的引用計數為1

b = a #引用計數加1,為2

del a #刪除a的引用,此時引用計數為1

當‘2’的引用計數為0的時候,他會在適當的時機被Python的垃圾回收機制回收。

但在特定的情況(循環引用)下,會阻止垃圾回收機制銷毀不再使用的對象,如:

a={} #引用為1

b={} #引用為1

a['b']=b #b的引用加1,為2

b['a']=a #a的引用加1,位2

del a #刪除a,a的引用為1

del b #刪除b,b的引用為1

在這個例子中,del語句減少了a和b的引用計數並刪除了用於引用的變量名,可是由於兩個對象各包含一個對方的引用,雖然最後兩個對象都無法通過名字訪問,但引用計數並沒有減為0。因此不會被銷毀,會一直保留在內存中,造成內存洩漏。

為解決這個問題,python解釋器會定期運行一個搜索器,若發現一個對象已經無法被訪問,無論該對象引用計數是否為0,都銷毀他。

CentOS上源碼安裝Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm

《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm

Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved