仍然对引用计数感到困惑

时间:2016-07-27 20:35:22

标签: python reference counting

出于好奇,我试图理解引用计数在Python中是如何工作的。这两个条目:

很有帮助,但仍然提出了问题。

  1. 使用sys.getrefcount()会返回与len(gc.get_referrers())不同的值。例如:

    >>> a = 3
    >>> print sys.getrefcount(a)
    38
    >>> print len(gc.get_referrers(a))
    23
    

    为何与众不同?

  2. 根据我的理解,a上的引用计数是如此之高,因为在绑定名称{{1}时,已有一个对象保持整数值3对它。 Python如何跟踪哪个对象持有a以便它将名称3绑定到它并相应地增加其引用计数?

1 个答案:

答案 0 :(得分:0)

  1. public function index(Request $request) { $tasks = $request->user()->tasks()->get(); return view('tasks', [ 'tasks' => $tasks, ]); } 仅返回循环检测GC知道的对象。不能参与参考周期的对象不需要由周期检测器跟踪,因此它们可能不会显示在gc.get_referrers列表中。
  2. 使用this array here

    get_referrers