当前位置: 首页 > 面试题库 >

在python中查找对对象的所有引用

解高昂
2023-03-14
问题内容

在python中找到对对象的所有引用的好方法是什么?

我问的原因是看起来我们有“内存泄漏”。我们正在将图像文件从Web浏览器上传到服务器。每次执行此操作时,服务器上的内存使用量都会与刚刚上传的文件的大小成比例地增加。python垃圾回收永远不会释放该内存,因此我认为即使在每次请求结束时,也可能存在指向图像html" target="_blank">数据的流浪引用,这些引用并没有被删除或超出范围。

我认为能够问python很好:“哪些引用仍指向此内存?” 这样我才能弄清楚是什么使垃圾回收器无法释放它。

当前,我们在Heroku服务器上运行Python和Django。


问题答案:

Python的标准库具有gc包含垃圾收集器API的模块。您可能想拥有的功能之一是

gc.get_objects()

此函数返回垃圾收集器当前跟踪的所有对象的列表。下一步是分析它。

如果知道要跟踪的对象,则可以使用sys模块的getrefcount功能:

>>> x = object()
>>> sys.getrefcount(x)
2
>>> y = x
>>> sys.getrefcount(x)
3


 类似资料:
  • 问题内容: 是否有可能在Java中获得对对象的所有引用。 我需要检查的是对象是否删除了所有的回调订阅。 谢谢 问题答案: 这可以通过JVMTI实现,并且通常由堆分析器完成。但是,它不能在Java内部完成。

  • 我有一个ArrayList,从ArrayList的末尾(即使用add(object)方法)以串行方式(即逐个)填充Integer类型的对象。每次我这样做,ArrayList中的其他对象都会左移一个索引。 在我的代码中,我想在ArrayList中找到一个随机对象的索引。我想避免使用indexOf方法,因为我有一个非常大的ArrayList,循环将花费大量时间。有什么解决办法吗?如何在某些数据结构中保

  • 我有以下代码用于在对Mongoose数据库的API调用中获取路由,我想使用一个查询字符串来查找包含各种单词的所有项,示例路径是: /CPU=I3&Username=Bob 这将导致所有CPU中包含i3的用户都使用包含bob的名称(一个奇怪的例子!)。 CPU可以是任何一代的,并且实际上包含以下内容: Intel(R)Core(TM)i3-8109U CPU@3.00 GHz或Intel(R)Cor

  • 我用的是Spring。我有一个用户表。 当一个人登录系统时,他会向我发送他的凭证(即用户名和密码)。 我用增量生成的uid(即userid是主键)将我的用户存储在数据库中。 我还在数据库中存储了用户名、密码等信息。我需要做的是,当用户连接到Rest连接时,我需要检查数据库是否有这个用户。如果他存在,那么我需要检查密码是否匹配。我需要通过用户名而不是uid进行检查 我的程序中根本没有会话或任何东西(

  • 问题内容: 我有一些复杂的对象,例如猫,它具有许多属性,例如年龄,喜爱的猫食等等。 Java集中存储了一堆猫,我需要查找所有3岁的猫,或者最喜欢猫粮的Whiskas。当然,我可以编写一个自定义方法来查找那些具有特定属性的Cat,但是这样做会麻烦许多属性。有一些通用的方法吗? 问题答案: 您可以编写一个采用接口实例的方法,该实例定义了一个方法,该方法可以通过所需的任何属性检查来实现。 更好的是,使其

  • 问题内容: 我在Java中有一个ArrayList,我需要在其中查找所有出现的特定对象。方法ArrayList.indexOf(Object)仅发现一个事件,因此似乎我需要其他东西。 问题答案: 我认为您不必对此太幻想。以下应该可以正常工作: