ami*_*mit 6 python malloc freebsd
我在Freebsd上用python字符串观察一个奇怪的内存使用模式.考虑以下会话.想法是创建一个包含一些字符串的列表,以便列表中的累积字符为100MB.
l = []
for i in xrange(100000):
l.append(str(i) * (1000/len(str(i))))
Run Code Online (Sandbox Code Playgroud)
这按预期使用大约100MB的内存,'del l'将清除它.
l = []
for i in xrange(20000):
l.append(str(i) * (5000/len(str(i))))
Run Code Online (Sandbox Code Playgroud)
这是使用165MB的内存.我真的不明白额外的内存使用来自哪里.[两个列表的大小相同]
FreeBSD 7.2上的Python 2.6.4.在Linux/Windows上,它们仅使用大约100mb的内存.
更新:我正在使用'ps aux'测量内存.在上面的代码片段之后,可以使用os.sytem执行该操作.这些也是分别执行的.
Update2:看起来像freebsd mallocs内存的2的倍数.所以分配5KB实际上分配8KB.我不确定.