Объем памяти Python по сравнению с размером кучи

У меня возникли проблемы с памятью при использовании сценария Python для выдачи большогоsolr запрос. Я используюsolrpy библиотека для взаимодействия с сервером solr. Запрос возвращает около 80000 записей. Сразу после выдачи запроса объем памяти Python, просматриваемый с помощью всплывающих подсказок, достигает ~ 190 МБ.

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
8225 root      16   0  193m 189m 3272 S  0.0 11.2   0:11.31 python
...

На этом этапе профиль кучи, если смотреть через heapy, выглядит следующим образом:

Partition of a set of 163934 objects. Total size = 14157888 bytes.   
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0  80472  49  7401384  52   7401384  52 unicode
     1  44923  27  3315928  23  10717312  76 str
...

Объекты Unicode представляют уникальные идентификаторы записей из запроса. Стоит отметить, что общий размер кучи составляет всего 14 МБ, тогда как python занимает 190 МБ физической памяти. Как только переменная, хранящая результаты запроса, выходит из области видимости, профиль кучи правильно отражает сборку мусора:

Partition of a set of 83586 objects. Total size = 6437744 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0  44928  54  3316108  52   3316108  52 str

Тем не менее, объем памяти остается неизменным:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 8225 root      16   0  195m 192m 3432 S  0.0 11.3   0:13.46 python
...

Почему существует такое большое несоответствие между объемом физической памяти python и размером кучи python?

Ответы на вопрос(4)

Ваш ответ на вопрос