2 回答

TA貢獻(xiàn)1836條經(jīng)驗 獲得超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
因此,我的每個鏈表節(jié)點均為72字節(jié)x 10M,應(yīng)為720MB,.72GB
我運行該程序,并使用top看到內(nèi)存開銷為3.6G。我的elem大小是您的兩倍,而我注意到消耗的總內(nèi)存是您的兩倍(3.6G,而1.7G)。
這一定是由于額外的python內(nèi)存開銷,例如垃圾回收。

TA貢獻(xiàn)1890條經(jīng)驗 獲得超9個贊
>>> class Record:
... def __init__(self, elem):
... self.elem = elem
... self.next = None
...
>>> r = Record(1)
>>> sys.getsizeof(r)
72
還是我錯過了什么?
另外,在我的系統(tǒng)上:
>>> sys.getsizeof(1)
24
>>> sys.getsizeof(None)
16
添加回答
舉報