Похоже, сборщик мусора не собирает значения pop
'd из dict()
в python 2.7 (не пытался на python 3). Вот пример:dict pop не освобождает память
a = dict()
# fill the memory (dict)
for i in xrange(0, 9999999):
a[i] = i
# Memory usage is about 600 MB
# try to free the memory
for i in xrange(0, 9999999):
a.pop(i)
# print the dict and see it is empty
print "%r" % a
# prints: {}
# Memory usage is about 600 MB
import copy
a = copy.copy(a)
# Memory usage decreased to about 200 MB
import gc
gc.collect()
# Memory usage decreased to about 10 MB
Кто-нибудь знает, почему это происходит и как решить эту проблему утечки памяти?
как вы измерили использование памяти? – Daniel
с помощью команды 'top' –
Зачем использовать' pop', а не 'del'? –