博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python虚拟机内存泄露?
阅读量:4563 次
发布时间:2019-06-08

本文共 764 字,大约阅读时间需要 2 分钟。

发现引擎有内存泄露。

根据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单词也没记住)工具来查比较好,因为它会忽略这种一次性申请的“泄露”。

转载于:https://www.cnblogs.com/konlil/archive/2011/06/04/2072661.html

你可能感兴趣的文章
哈弗曼编码
查看>>
android 开机自启动
查看>>
这个SpringMVC的一直刷屏的问题你见过吗?无解
查看>>
自定义状态栏中的UIActivityIndicatorView
查看>>
我的2015年度总结
查看>>
2017-5-16/网站性能测试指标及网站压力测试
查看>>
Open CV 播放视频(2)
查看>>
object-c基础学习 基于<iOS软件开发揭秘>
查看>>
Scoreboard and Tomasulo
查看>>
sentinel控制台
查看>>
selenium 难定位元素,时间插件,下拉框定位,string包含,定位列表中的一个,技巧...
查看>>
【转】一些数据格式化-Eval( " ")和DataBinder.Eval(Container.DataItem, " ")的区别及用法...
查看>>
斗地主算法的设计与实现(四)--对牌进行排序
查看>>
How to get web browser history using cursor
查看>>
软键盘覆盖EditText解决方法
查看>>
Daily Scrumming* 2015.11.1(Day 13)
查看>>
css不定高图文垂直居中的三种方法
查看>>
剑指offer--1.二维数组中的查找
查看>>
第3次作业:团队介绍
查看>>
[html][javascript]父子窗体传值
查看>>