Python Glossary English

все Python 3sysфункция

sys.getrefcount()

память

Возвращает счётчик ссылок на объект. Число обычно на единицу больше ожидаемого: аргумент самого вызова — тоже ссылка.

Синтаксис

sys.getrefcount(object)

Для a = [] ответ 2, а не 1 — вторую ссылку держит параметр getrefcount. С Python 3.12 у «бессмертных» объектов (None, True, малые int, многие строки) счётчик огромный и ни о чём не говорит. Надёжны только значения 0 и 1; в свободнопоточной сборке и с оптимизациями 3.14 числа тоже другие. Это деталь CPython: искать утечки лучше через gc и tracemalloc.

Примеры

import sys
a = []
print(sys.getrefcount(a))  # → 2
b = a
print(sys.getrefcount(a))  # → 3
del b
print(sys.getrefcount(a))  # → 2
# Python 3.12+
import sys
print(sys.getrefcount(None) > 10 ** 9)  # → True — бессмертный объект

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности