python內存泄漏,python垃圾手動回收,1


部署的輿情系統,內存變大,找原因。

一個小例子。

def func():

    local_list = list(range(10000000))

 

func()

time.sleep(200)

 

能夠觀察到,在sleep 200秒的時間內,程序的內存一直是200多M,雖然是函數局部變量,執行后在外部無法使用了,但仍然占據大內存。

 

 

再來一個

global_list = list(range(10000000))

del global_list

time.sleep(200)

能夠觀察到,在sleep 200秒的時間內,程序的內存一直也是200多M,引用計數變為0,但仍然占據大內存。

 

引入gc模塊

在sleep之前插入 gc.collect()

查看內存,內存直接下降到10M內了,這是我期待的。

 

本篇的list代表一個巨大的內存的變量,以range(10000000)來指代。不要扯上什么xrange  range,我就是要用這個來簡單指代一些巨大內存的變量。

實際過程中指代的是下載 上傳巨大的html源碼,爬蟲過程中如果遇到mp4 avi連接沒有過濾,下載了mp4的字符串就會是一個巨大的字符串。

 

之前有個地方,給njinx的網關接口上傳結果,發現一直被njinx拒絕,請求不成功,而程序中遇到這種情況,一直等待60秒一直重試,導致永遠不可能上傳,內存永遠降不下來。

 

下一篇介紹,監控內存和釋放內存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM