在python中查找对对象的所有引用
我问的原因是看起来我们有“内存泄漏”。我们正在将图像文件从Web浏览器上传到服务器。每次执行此操作时,服务器上的内存使用量都会与刚刚上传的文件的大小成比例地增加。python垃圾回收永远不会释放该内存,因此我认为即使在每次请求结束时,也可能存在指向图像数据的流浪引用,这些引用并没有被删除或超出范围。
我认为能够问python很好:“哪些引用仍指向此内存?” 这样我才能弄清楚是什么使垃圾回收器无法释放它。
当前,我们在Heroku服务器上运行Python和Django。
回答:
Python的标准库具有gc
包含垃圾收集器API的模块。您可能想拥有的功能之一是
gc.get_objects()
此函数返回垃圾收集器当前跟踪的所有对象的列表。下一步是分析它。
如果知道要跟踪的对象,则可以使用sys
模块的getrefcount
功能:
>>> x = object()>>> sys.getrefcount(x)
2
>>> y = x
>>> sys.getrefcount(x)
3
以上是 在python中查找对对象的所有引用 的全部内容, 来源链接: utcz.com/qa/412764.html