2006年01月07日 星期六 00:11
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
2006年01月07日 星期六 00:57
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 > >
2006年01月07日 星期六 18:13
我发现这似乎是一个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
Zeuux © 2025
京ICP备05028076号