文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python虚拟机内存泄露?

python虚拟机内存泄露?

时间:2011-06-04  来源:konlil

发现引擎有内存泄露。

根据TDD思想,将复杂的demo统统扔一边,写了几个非常简单的test工程(期间还了解了一下google开源的gtest单元测试框架,相当好用,推荐一下)。test工程依次测试了不同的dll,发现python.dll发生泄露,如果是以前我一定会忽略之,认为是检测工具的问题(我用的是visual leak detector 1.9d);但是自从查了几次泄露问题及翻了一下vld的代码之后,对于泄露问题还是比较谨慎。

根据vld报的结果,在执行Py_Initialize()之后就发生了内存申请,并且这部分内存没有被释放。以前没有读过python源码,所以理解起来很费劲。

依旧follow tdd的思想,写test工程:

#include "vld.h"#include "python.h"
#pragma comment(lib, "pythonstatic_27.lib")
int main()
{
Py_Initialize();
Py_Finialize();
return 0;
}

测试发现依然泄露,认定python虚拟机有内存泄露,仔细查了下代码,发现python解释器在初始化时会一次性分配一些内存用于类型等对象的存储;而这部分内存直到退出都不会释放;因此被vld认定为内存泄露。

最后在google大神的帮助下,确认了这一事实,一段英文(原文找不到了)解释了这一问题,并且被开发组认为不是真正的泄露,so一直都没有修正。其中还推荐实用valgarid(*nix平台上的,so单词也没记住)工具来查比较好,因为它会忽略这种一次性申请的“泄露”。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载