zoukankan      html  css  js  c++  java
  • python虚拟机内存泄露?

    发现引擎有内存泄露。

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

  • 相关阅读:
    Makefile编写
    C++静态库与动态库
    C语言编译过程详解
    Fiddler抓HTTPS
    web测试的一些关注点
    Appium使用过程中的一些坑
    Jmeter+Maven+Jenkins的搭建笔记
    华为DHCP+VLANDHCP RELAY配置重点
    华为GVRP配置重点
    802.11协议总结
  • 原文地址:https://www.cnblogs.com/konlil/p/2072661.html
Copyright © 2011-2022 走看看