Кажется, python3.5 не полностью освобождает память от любого удаленного объекта, это может быть из-за того, что python внутренне поддерживает какой-то пул memroy для повторного использования цели, однако я не хочу их повторно использовать, и я хочу освободить чтобы сделать память доступной для других программ, работающих на Linux.
>>> psutil.Process().memory_info().rss / 2**20
11.47265625
>>> d = {x:x for x in range(10**7)}
>>> psutil.Process().memory_info().rss / 2**20
897.1796875
>>> del d
>>> gc.collect()
0
>>> psutil.Process().memory_info().rss / 2**20
15.5859375
Это просто пример игрушек, настоящая проблема - на запущенном сервере, взяв 20 ГБ несвободной памяти.
вот еще один пример: (wd1 - это dict dict с строковыми клавишами)
>>> psutil.Process().memory_info().rss / 2**20
28.1796875
>>> wd1 = {x:{i:i for i in d} for x in k}
>>> psutil.Process().memory_info().rss / 2**20
682.78125
>>> del wd1
>>> psutil.Process().memory_info().rss / 2**20
186.21484375