我正在使用大量内存分析器来找出我的 python 程序中发生的内存膨胀。正如您在下面的时间线中看到的那样,时间线中 t1 和 t2 之间的内存量根据任务管理器报告的内容增长了大约 20 MB,但基于 heapy 仅增长了 1.6 MB。剩下的内存在哪里?这是否表明碎片化?如何验证哪个对象(例如 CloudEntry)导致碎片?
时间线:
t1(66 MB专用字节任务管理器)
hpy().setrelheap()
// program runs ...
// ...
// ..
// .
t2(私有字节任务管理器中的86 MB ):
Partition of a set of 21897 objects. Total size = 1868016 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 926 4 485224 26 485224 26 dict of common.cloud_entry.CloudEntry
1 5564 25 431040 23 916264 49 str
2 1888 9 219008 12 1135272 61 __builtin__.set
3 388 2 203312 11 1338584 72 dict of Queue.Queue
4 1164 5 162960 9 1501544 80 dict of threading._Condition
5 2328 11 83808 4 1585352 85 types.BuiltinFunctionType
6 4561 21 54732 3 1640084 88 int
7 1172 5 44688 2 1684772 90 list
8 1164 5 37248 2 1722020 92 threading._Condition
9 926 4 29632 2 1751652 94 common.cloud_entry.CloudEntry
<64 more rows. Type e.g. '_.more' to view.>