有没有办法找出修改或创建列表的行或功能?

问题描述

我在使用gc.get_referrers的python程序中发现了可能的内存泄漏,但是我找不到哪个对象拥有该对象:

class Foo:
    def __init__(self,i,j):
        self.i = i
        self.j = j

def do_stuff(obj):
    # do stuff with obj

    objs = gc.get_objects()
    ls = [obj for obj in objs if isinstance(obj,Foo)]
    foo = ls[0]
    refs = gc.get_referrers(foo)
    l = None
    for ref in refs:
        if type(ref) == list:
            if len(ref) > 1000:
                l = ref
    objgraph.show_backrefs([gc.get_referrers(l)[0]],filename='sample-backref-graph.png')

这只是给我一个这样的图形:

Foo object <--- list of 100k foo object <--- list of lists

试图递归地找到它,但是我找不到任何不是列表的东西。那么,有没有办法找出哪个函数写入了此列表,或者至少找到了创建该函数的那一行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...