2 回答
TA贡献1836条经验 获得超5个赞
更改了打印输出,如下所示:
class Record:
def __init__(self,elem):
self.elem=elem
self.next=None
def size(self):
print 'Record size = ', sys.getsizeof(self)
print 'elem.size = ', sys.getsizeof(self.elem)
print 'next.size = ', sys.getsizeof(self.next)
输出 :
Record size = 72
elem.size = 24
next.size = 16
因此,我的每个链表节点均为72字节x 10M,应为720MB,.72GB
我运行该程序,并使用top看到内存开销为3.6G。我的elem大小是您的两倍,而我注意到消耗的总内存是您的两倍(3.6G,而1.7G)。
这一定是由于额外的python内存开销,例如垃圾回收。
TA贡献1890条经验 获得超9个赞
>>> class Record:
... def __init__(self, elem):
... self.elem = elem
... self.next = None
...
>>> r = Record(1)
>>> sys.getsizeof(r)
72
还是我错过了什么?
另外,在我的系统上:
>>> sys.getsizeof(1)
24
>>> sys.getsizeof(None)
16
添加回答
举报