Gvim7.3 + Python3 接口的内存使用完全失控

<本文的原始位置: http://bluegene8210.is-programmer.com/posts/26206.html>

 

    ---- 为什么会有这种鸟事,为什么为什么。一度以为 Vim 已经很熟不需要再搞了,谁知道风平浪静的日子是没有的。快抓狂了。Vim 是这么成熟的编辑器,这种事难道该发生么。

    ---- 原本以为是 Python 代码写的有问题,对 Python 不熟,内存泄漏什么的。逐渐排除了以后开始锁定到 Python 接口上面,具体讲就是 vim.buffer 这个东西。这个是测试代码:

 1 lcd %:h
 2 tabedit tmpbuffer
 3 setlocal buftype=nofile
 4  
 5 python3 << EOF
 6 for i in range(3):
 7     flines= ['x'*200] * 50000
 8     vim.command("%s+\\_.*++g")
 9     for fl in flines:
10         vim.current.buffer.append(fl)
11     del flines[:]
12 EOF


    ---- 而这个是结果:

        在 gvim7.2 + Python2 接口下面:
            第 1 次 source:    46.8 MB    内存,关闭 tmpbuffer 后不变
            第 2 次 source:    59.2 MB    内存,关闭 tmpbuffer 后 58.1
            第 3 次 source:    61.6 MB    内存,关闭 tmpbuffer 后 60.4
            第 4 次 source:    63.9 MB    内存,关闭 tmpbuffer 后 63.6
            第 5 次 source:    66.3 MB    内存,关闭 tmpbuffer 后 65.1
       
        在 gvim7.3 + Python3 接口下面:
            第 1 次 source:    142.6 MB 内存,关闭 tmpbuffer 后不变
            第 2 次 source:    238.5 MB 内存,关闭 tmpbuffer 后不变
            第 3 次 source:    334.5 MB 内存,关闭 tmpbuffer 后不变

    ---- buftype 选项其实对结果无影响。第一个看上去还好。第二个,好像 gvim7.3 的 Python3 接口是没有任何内存回收的,就这么任由它增长。另外初次运行的内存消耗也是 gvim7.2 的三倍。这没问题么? 问题大了。后来索性一直运行,这个是最后的结果:

    ---- 我表示这不是我的问题。考虑把这个贴到 vim-use 群里面。

    ---- 这个很打击我写插件的热情。不过还是要写,不写就亏大了,尼玛感觉就跟炒股被套一样。昨天新加的:

        1. 丰富了颜色

        2. 添加了功能: 除当前节点和它的上级节点之外,关闭其它所有打开的节点。

        3. 添加了功能: 锁定根节点,只能在根节点内部浏览。

posted @ 2013-05-19 12:34  JackyLiu2010  阅读(292)  评论(0编辑  收藏  举报