FreeBSD上的Python字符串内存使用情况

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.我不确定.

Apa*_*ala 0

答案或许就在这个传奇里。我认为您正在目睹一些不可避免的内存管理器开销。

正如 @Hossein 所说,尝试在一次运行中执行两个代码片段,然后交换它们。