Python 为什么嵌套列表会在Ubuntu 14.04上泄漏内存?

Python 为什么嵌套列表会在Ubuntu 14.04上泄漏内存?,python,python-2.7,memory-leaks,Python,Python 2.7,Memory Leaks,我运行时出现“高水位”内存泄漏行为: import gc temp = [[0.1] for _ in xrange(10 ** 7)] del temp gc.collect() 驻留内存从~7 MB开始上升到~1000 MB,然后稳定在~312MB。后续运行不会将内存泄漏增加到312MB以上。为什么会发生这种情况?是否有已知的解决方法 各种意见: 它发生在Ubuntu 14.04上,但不是在OSX上 它不会发生在蟒蛇3中 [[]用于xrange(10**7)]不会泄漏 [0.1用于xran

我运行时出现“高水位”内存泄漏行为:

import gc
temp = [[0.1] for _ in xrange(10 ** 7)]
del temp
gc.collect()
驻留内存从~7 MB开始上升到~1000 MB,然后稳定在~312MB。后续运行不会将内存泄漏增加到312MB以上。为什么会发生这种情况?是否有已知的解决方法

各种意见:

  • 它发生在Ubuntu 14.04上,但不是在OSX上
  • 它不会发生在蟒蛇3中
  • [[]用于xrange(10**7)]
    不会泄漏
  • [0.1用于xrange(10**7)]
    不会泄漏
  • [(0.1,)for uu in xrange(10**7)]
    不会泄漏
  • [0.1用于xrange(10**7)]
    不会泄漏
  • {random.random():{0.1:0.1}for uu在xrange(10**7)中}
    不泄漏
  • 一次只清除一个列表没有帮助
  • 在pythonshell中运行vs在文件中运行似乎没有影响
  • 我在python版本中复制了这种行为:2.7.15、2.7.14、2.7.11和2.7.5
  • 我的第一个直觉是,这是由于竞技场没有得到清理。但是这没有意义,因为我希望在xrange(10**7)中的
    [0.1 for uuu]也有同样的行为

    为什么嵌套列表/字典会导致这种高水位线行为

    我主要使用
    htop

    相关的方法测量驻留内存: