我正在寫一個扭曲的PB應用程序,似乎使用了大量的內存,永遠不會在用戶斷開連接時釋放。Python內存使用不下降
我有一個pb.Root對象,客戶端連接並調用一個返回pb.Referenceable對象的遠程方法,該對象在創建時加速讀取大量信息到內存中(大約2GB的數據)採取行動。此對象以及有關客戶端的其他信息將被插入到列表中。
當客戶端從服務器斷開連接時,我調用一些對該對象的清理操作以刪除對正在存儲的高速緩存對象的引用。該chunkCache是我存儲的數據字典。
def disconnected(self):
self.connected = False
self.chunkCache = None
self.cur.close()
一旦客戶根據上面斷開內存使用率從來沒有下降還在說的2Gb。
我應該擔心這個還是分配的內存會在需要時釋放,或者如果沒有任何想法,我該如何釋放這個內存?它是在創建對象時創建的,並且不會在其他地方傳遞。
在那個對象裏面,我確實有一個deferToThread調用,可以阻止這個項目被釋放嗎?
我在Linux上使用python 2.7。
UPDATE:
林困惑,我剛纔添加的自定義__del__
方法,我的對象,並把打印語句在那裏,他們被刪除,所以爲什麼內存使用量也不會下降?
感謝
院長
這使得很多道理,似乎模仿我的應用程序的行爲。當客戶端重新連接時,內存使用率只會上升到另一個100Mb左右,並在第二個客戶端斷開連接時下降一點。當我做一些診斷來計算所有對象的大小時,它出現在大約400MB,這是一個更合理的點亮。所以你認爲我可以安全地假設我的應用程序沒有問題? – Deano123