Python プログラムで発生するメモリの膨張を把握するために、ヒーピー メモリ プロファイラを使用しています。以下のタイムラインでわかるように、タイムラインの t1 と t2 の間のメモリ量は、タスク マネージャーのレポートに基づいて約 20 MB 増加しますが、ヒーピーに基づいて 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.>