什么是估计对象内存占用的好方法?
相反,衡量足迹的好方法是什么?
例如,假设我有一个字典,其值是整数,浮动元组的列表:
d['key'] = [ (1131, 3.11e18), (9813, 2.48e19), (4991, 9.11e18) ]
我有4G物理内存,想知道在我溢出到swap之前我可以在内存中存储多少行(键:值).这是在linux/ubuntu 8.04和OS X 10.5.6上.
另外,找出我的程序的实际内存占用量的最佳方法是什么?如何在耗尽物理内存和溢出时最好地弄清楚什么?
Guppy有一个很好的内存分析器(Heapy):
>>> from guppy import hpy >>> hp = hpy() >>> hp.setrelheap() # ignore all existing objects >>> d = {} >>> d['key'] = [ (1131, 3.11e18), (9813, 2.48e19), (4991, 9.11e18) ] >>> hp.heap() Partition of a set of 24 objects. Total size = 1464 bytes. Index Count % Size % Cumulative % Kind (class / dict of class) 0 2 8 676 46 676 46 types.FrameType 1 6 25 220 15 896 61 str 2 6 25 184 13 1080 74 tuple ...
Heapy有点不详,所以你可能不得不深入挖掘一下网页或源代码,但它非常强大.还有一些可能相关的文章.
您可以使用内存分析器执行此操作,其中有一些我知道:
PySizer - 正如主页现在推荐的那样,已经过时了:
Heapy.
这可能是这个问题的重复.