我正在编写一个扭曲的 PB 应用程序,它似乎使用了大量的内存,当用户断开连接时似乎永远不会释放。
我有一个 pb.Root 对象,客户端连接到该对象并调用一个返回 pb.Referenceable 对象的远程方法,该对象在创建时将大量信息(大约 2GB 的数据)读入内存以加快操作速度。该对象以及有关客户端的一些其他信息被插入到列表中。
当客户端与服务器断开连接时,我对该对象调用一些清理操作以删除对正在存储的缓存对象的引用。chunkCache 是我存储数据的字典。
def disconnected(self):
self.connected = False
self.chunkCache = None
self.cur.close()
一旦客户端根据 top never drop 断开内存使用情况,它仍然会显示 2Gb。
我应该担心这一点,还是会在需要时释放分配的内存,或者如果没有任何想法,我该如何释放这些内存?它是在创建对象时创建的,而不是在其他任何地方传递。
在该对象内部,我确实有一个 deferToThread 调用,这是否会阻止正在释放的项目?
我在 Linux 上使用 python 2.7。
更新:
我很困惑,我刚刚__del__
向我的对象添加了自定义方法并在其中放置了一个打印语句,它们正在被删除,那么为什么内存使用量永远不会下降?
谢谢
院长