以下程序在與python 2.7.13鏈接並在Windows 10上運行時緩慢但穩定地泄漏內存。將python嵌入我的應用程序時發生內存泄露
#include <Python.h>
#include <iostream>
int main()
{
std::cout << "Python version: " << PY_VERSION << std::endl;
while (true)
{
Py_Initialize();
//PyGC_Collect();
Py_Finalize();
}
return 0;
}
有趣的是,似乎不是每一次迭代都會泄漏內存。然而,我所看到的是,無論泄漏如何,python打印的引用計數緩慢增加了大約90次(非常數)的迭代次數。使用Visual Studio診斷工具我發現當從磁盤讀取編譯模塊(實際的調用堆棧深度高達幾個級別)時,調用PyImport_ImportModule()
時發生泄漏。
是否需要我不知道的其他清理步驟?或者是有什麼關於Python垃圾回收器可能會導致這種情況,它不是一個「真正的」內存泄漏?
我認爲你一般'初始化'一次,'敲定'一次,所以泄漏是一個常量,這使得它不是內存泄漏。 – leovp