2011-03-02 83 views
1

我做錯了什麼或者web.py泄漏內存?web.py內存泄漏

import web 

class Index: 
    def GET(self): return 'hello web.py' 
app = web.application(('/*', 'Index'), globals()) 
app.run() 

運行上述文件。觀察任務使用多少內存。在瀏覽器中轉到localhost:8080。關閉瀏覽器(保持頁面不被緩存),然後再次打開頁面,查看內存使用情況如何上升。每次關閉瀏覽器並重新訪問該頁面時,它都會上升。

在Win XP上運行python 2.6。

+0

可能是python進程在Windows上使用的某種底層資源(CLOSE_WAIT模式下的套接字緩衝區等) – Novikov 2011-03-02 02:41:07

回答

4

在運行你的代碼併發送了數以千計的請求(通過使用urllib2的另一個Python進程)之後,我發現它在前幾百次請求過程中增長了大約200k,然後停止增長。這似乎並不合理,並且不需要指出內存泄漏。請記住,Python通過引用計數和垃圾收集的組合來使用自動內存管理,所以不能保證它使用的每一塊內存都可以在不再使用的時候重用;並且它可以從操作系統請求內存,然後即使不再需要它也不返回。

所以我認爲答案是:你沒有做錯任何事,但web.py不會泄漏內存。

+0

+1爲「web.py不泄漏內存」。 Yandex每天使用web.py來處理7000萬頁的瀏覽量。你很可能不會發現一個嚴重的資源泄漏問題,觸及「Hello world!」應用程序與您的瀏覽器一次一頁。我還用urllib2打了幾百次演示應用程序,內存使用情況似乎相當穩定。 – 2011-03-02 02:55:44

+0

啊,是的,我應該想到使用urllib來檢查。謝謝。 – 2011-03-02 03:22:09