亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python的內存泄漏及gc模塊的使用分析

2020-02-23 05:35:35
字體:
來源:轉載
供稿:網友

一般來說在 Python 中,為了解決內存泄漏問題,采用了對象引用計數,并基于引用計數實現自動垃圾回收。
由于Python 有了自動垃圾回收功能,就造成了不少初學者誤認為自己從此過上了好日子,不必再受內存泄漏的騷擾了。但如果仔細查看一下Python文檔對 __del__() 函數的描述,就知道這種好日子里也是有陰云的。下面摘抄一點文檔內容如下:

Some common situations that may prevent the reference count of an object from going to zero include: circular references between objects (e.g., a doubly-linked list or a tree data structure with parent and child pointers); a reference to the object on the stack frame of a function that caught an exception (the traceback stored in sys.exc_traceback keeps the stack frame alive); or a reference to the object on the stack frame that raised an unhandled exception in interactive mode (the traceback stored in sys.last_traceback keeps the stack frame alive).

可見,有 __del__() 函數的對象間的循環引用是導致內存泄漏的主兇。
另外需要說明:對沒有 __del__() 函數的 Python 對象間的循環引用,是可以被自動垃圾回收掉的。

如何知道一個對象是否內存泄漏了呢?

方法一、當你認為一個對象應該被銷毀時(即引用計數為 0),可以通過 sys.getrefcount(obj) 來獲取對象的引用計數,并根據返回值是否為 0 來判斷是否內存泄漏。如果返回的引用計數不為 0,說明在此刻對象 obj 是不能被垃圾回收器回收掉的。

方法二、也可以通過 Python 擴展模塊 gc 來查看不能回收的對象的詳細信息。


首先,來看一段正常的測試代碼:

#--------------- code begin --------------# -*- coding: utf-8 -*-import gcimport sysclass CGcLeak(object):  def __init__(self):    self._text = '#'*10  def __del__(self):    passdef make_circle_ref():  _gcleak = CGcLeak()#  _gcleak._self = _gcleak # test_code_1  print '_gcleak ref count0:%d' % sys.getrefcount(_gcleak)  del _gcleak  try:    print '_gcleak ref count1:%d' % sys.getrefcount(_gcleak)  except UnboundLocalError:    print '_gcleak is invalid!'def test_gcleak():  # Enable automatic garbage collection.  gc.enable()  # Set the garbage collection debugging flags.  gc.set_debug(gc.DEBUG_COLLECTABLE | gc.DEBUG_UNCOLLECTABLE | /    gc.DEBUG_INSTANCES | gc.DEBUG_OBJECTS)  print 'begin leak test...'  make_circle_ref()  print 'begin collect...'  _unreachable = gc.collect()  print 'unreachable object num:%d' % _unreachable  print 'garbage object num:%d' % len(gc.garbage)if __name__ == '__main__':  test_gcleak()

在 test_gcleak() 中,設置垃圾回收器調試標志后,再用 collect() 進行垃圾回收,最后打印出該次垃圾回收發現的不可達的垃圾對象數和整個解釋器中的垃圾對象數。

gc.garbage 是一個 list 對象,列表項是垃圾收集器發現的不可達(即是垃圾對象)、但又不能釋放(即不能回收)的對象。文檔描述為:A list of objects which the collector found to be unreachable but could not be freed (uncollectable objects).

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产91久久久久久最新| 国产精品久久久久久久久免费看| 国产精品老牛影院在线观看| 亚洲欧美日韩国产中文| 91精品免费视频| 亚洲91精品在线观看| 国产免费观看久久黄| 精品成人在线视频| 亚洲欧美国产一本综合首页| 国产丝袜一区二区三区| 亚洲最大在线视频| 91精品国产亚洲| 国产精品88a∨| 精品久久久免费| 亚洲精品福利视频| 粉嫩av一区二区三区免费野| 亚洲人午夜精品| 久久久久久久网站| 亚洲欧美国产精品久久久久久久| 97在线视频免费| 亚洲欧美日韩成人| 亚洲成人激情视频| 国产精品视频精品视频| 亚洲天堂网在线观看| 久久久久久久久久久免费精品| 91久久夜色精品国产网站| 国产不卡视频在线| 久久精品99久久香蕉国产色戒| 国产日韩av在线播放| 久久久99免费视频| 国产一区二区三区精品久久久| 欧美高清在线播放| 国产成人精品日本亚洲专区61| 少妇高潮 亚洲精品| 欧美黑人巨大精品一区二区| 在线播放日韩欧美| 欧美激情一区二区三区在线视频观看| 91精品国产九九九久久久亚洲| 欧美日韩免费区域视频在线观看| 在线观看成人黄色| 欧美激情免费视频| 久久久精品久久久久| 日韩**中文字幕毛片| 精品亚洲一区二区三区在线播放| 久久久久久美女| 欧美精品www在线观看| 成人黄色av播放免费| 91最新在线免费观看| 97热在线精品视频在线观看| 8x海外华人永久免费日韩内陆视频| 久久91超碰青草是什么| 国产精品夜间视频香蕉| 美女扒开尿口让男人操亚洲视频网站| 日韩电影网在线| 成人激情视频在线播放| 国产精品久久久| 国产专区精品视频| 亚洲一区二区三区视频| 亚洲精品小视频在线观看| 亚洲欧美一区二区精品久久久| 欧美午夜性色大片在线观看| 亚洲视频在线观看免费| 日韩视频免费在线观看| 日韩av在线资源| 91网站在线免费观看| 97香蕉超级碰碰久久免费的优势| 久久久精品国产| 欧美日韩视频免费播放| 日日狠狠久久偷偷四色综合免费| 欧美日韩免费在线观看| 国产一区二区三区直播精品电影| 欧美丰满片xxx777| 久久久久久久久久久久久久久久久久av| 久久香蕉国产线看观看av| 国产精品久久77777| 中文字幕亚洲国产| 国产一区二区视频在线观看| 国产精品人人做人人爽| 日韩美女中文字幕| 久久中文字幕视频| 欧美天天综合色影久久精品| 久久久精品一区| 国产精品福利在线观看| 九色精品免费永久在线| 欧美乱妇高清无乱码| 欧美丰满少妇xxxxx| 久久精品国产亚洲精品2020| 久久久久北条麻妃免费看| 亚洲999一在线观看www| 国产精品视频一区二区高潮| 一区二区福利视频| 51精品国产黑色丝袜高跟鞋| 91av成人在线| 成人在线视频网| 日本久久久久久| 欧美电影免费观看大全| 美日韩精品免费视频| 国产欧美日韩精品丝袜高跟鞋| 精品亚洲国产成av人片传媒| 另类专区欧美制服同性| 97在线观看视频国产| 欧美乱大交xxxxx| 亚洲美女视频网| 国产欧美一区二区三区视频| 日韩av最新在线| 国产丝袜视频一区| 日韩av在线影院| 国产精品美女久久久久av超清| 久久伊人91精品综合网站| 国产成人精品国内自产拍免费看| 欧美色道久久88综合亚洲精品| 日韩欧美在线视频观看| 国产精品大片wwwwww| 97免费在线视频| 国产精品视频自在线| 2020国产精品视频| 亚洲精品福利资源站| 亚洲xxxxx电影| 亚洲高清免费观看高清完整版| 欧美视频一二三| 欧美色videos| 国产精品99蜜臀久久不卡二区| 亚洲美女av网站| 国产精品三级久久久久久电影| 亚洲字幕一区二区| 成人女保姆的销魂服务| 欧美寡妇偷汉性猛交| 国产精品jvid在线观看蜜臀| 亚洲精品国偷自产在线99热| 亚洲精品美女在线观看| 高跟丝袜一区二区三区| 日韩免费不卡av| 韩曰欧美视频免费观看| 精品久久久久久中文字幕一区奶水| 中文在线资源观看视频网站免费不卡| 午夜精品久久久久久久99黑人| 欧美猛交ⅹxxx乱大交视频| 欧美日韩国产精品一区二区不卡中文| 日韩精品免费电影| 亚洲成av人影院在线观看| 日韩电影中文字幕一区| 91国偷自产一区二区三区的观看方式| 国产精品一区二区三区久久久| 91精品国产99久久久久久| 精品一区精品二区| 黑人巨大精品欧美一区二区| 国产精自产拍久久久久久蜜| 欧美日本高清视频| 一本色道久久88综合日韩精品| 国产精品嫩草影院久久久| 欧美色xxxx| 粉嫩av一区二区三区免费野| 欧美成人精品影院| 日韩美女在线观看一区| 精品国偷自产在线视频| 久久精品国产99国产精品澳门| 91精品国产综合久久久久久久久| 欧美日韩国产激情| 亚洲性av网站| 精品国产电影一区| 成人黄色av播放免费| 欧美日韩美女在线| 91在线视频成人| 亚洲美腿欧美激情另类|