在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

回到顶部