1

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.>
4

0 に答える 0