Python论坛  - 讨论区

标题:[python-chinese] 关于python的内存管理的问题

2006年01月07日 星期六 00:11

Leo Jay python.leojay at gmail.com
Sat Jan 7 00:11:55 HKT 2006

C/C++之类的语言要自己管理内存,有的时候会很麻烦,
Java和Python之类的语言自动管理内存,有的时候也很麻烦,因为我们不知道内存会在什么时候被释放

今天我在我的机器上发现python的一个问题,我不知道是不是一个bug:

我的环境是:windows xp pro + SP2, python 2.4.2官方网站上下载的安装版本,
我在D盘有一个近300MB的文件叫a.txt,
我做以下操作:

D:\>python
Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> f = file(r'd:\a.txt', 'rt')
>>> print len(f.read().split('\n'))
2699488
>>> f.close()
>>>

当我执行完f.close()之后,我发现,windows任务管理器显示我的python内存占用了300多MB,而且一直没有释放.
python这样搞不行吧?占着我300多MB的内存不放,这块内存在什么时候会被释放呢?
就算我执行del f或是f = 1这300多MB都不释放的.直到我按CTRL+Z退出python的时候内存才会释放.


哪个高人能解释一下这是怎么回事吗?怎么才能让python在我程序执行完了马上释放内存?

--
Best Regards,
Leo Jay

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年01月07日 星期六 00:57

xxmplus xxmplus at gmail.com
Sat Jan 7 00:57:40 HKT 2006

check the gc module

java可以显式要求释放资源,python是不是collect()就可以了?

在 06-1-7,Leo Jay<python.leojay at gmail.com> 写道:
> C/C++之类的语言要自己管理内存,有的时候会很麻烦,
> Java和Python之类的语言自动管理内存,有的时候也很麻烦,因为我们不知道内存会在什么时候被释放
>
> 今天我在我的机器上发现python的一个问题,我不知道是不是一个bug:
>
> 我的环境是:windows xp pro + SP2, python 2.4.2官方网站上下载的安装版本,
> 我在D盘有一个近300MB的文件叫a.txt,
> 我做以下操作:
>
> D:\>python
> Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> f = file(r'd:\a.txt', 'rt')
> >>> print len(f.read().split('\n'))
> 2699488
> >>> f.close()
> >>>
>
> 当我执行完f.close()之后,我发现,windows任务管理器显示我的python内存占用了300多MB,而且一直没有释放.
> python这样搞不行吧?占着我300多MB的内存不放,这块内存在什么时候会被释放呢?
> 就算我执行del f或是f = 1这300多MB都不释放的.直到我按CTRL+Z退出python的时候内存才会释放.
>
>
> 哪个高人能解释一下这是怎么回事吗?怎么才能让python在我程序执行完了马上释放内存?
>
> --
> Best Regards,
> Leo Jay
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年01月07日 星期六 18:13

Leo Jay python.leojay at gmail.com
Sat Jan 7 18:13:53 HKT 2006

我发现这似乎是一个split函数的bug,如果我把split函数去掉就好了
D:\>python
Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> f = file(r'd:\a.txt', 'rt')
>>> print len(f.read())
287603001
>>> f.close()
>>>


汗~~~

--
Best Regards,
Leo Jay

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号