您可以使用
gc.get_referrers函数获取对象的引荐列表,如下所示
import gc, pprint
pprint.pprint(gc.get_referrers("string"))
每个对象的引用计数存储在对象本身的一个名为ob_refcnt的变量中
typedef struct _object {
_PyObject_HEAD_EXTRA
Py_ssize_t ob_refcnt;
struct _typeobject *ob_type;
} PyObject;
并且分别使用宏Py_INCREF和Py_DECREF递增和递减对象的引用计数.
#define Py_INCREF(op) ( \
_Py_INC_REFTOTAL _Py_REF_DEBUG_COMMA \
((PyObject*)(op))->ob_refcnt++)
#define Py_DECREF(op) \
do { \
if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \
--((PyObject*)(op))->ob_refcnt != 0) \
_Py_CHECK_REFCNT(op) \
else \
_Py_Dealloc((PyObject *)(op)); \
} while (0)