Python 类结构导致的内存泄漏

Python 类结构导致的内存泄漏,python,memory,memory-leaks,out-of-memory,Python,Memory,Memory Leaks,Out Of Memory,我开发了一个python工具,可以与各种电源模拟软件交互以执行分析研究。经过多次测试后,该工具的结构似乎在运行研究时导致内存泄漏。奇怪的是,类所在的位置会影响内存的管理方式。这可能吗 有一个特定的函数嵌入到一个类中,该类通过一系列总体类进行访问。内存泄漏仅发生在一个特定软件上。如果我让这个类更接近顶部,即没有嵌入那么多的类,内存泄漏就会消失。或者,如果我跳过与具有此特定功能的power simulation软件的交互,它就会消失,因此我知道它是此软件、此功能和工具结构的特定功能。每次调用此函数时

我开发了一个python工具,可以与各种电源模拟软件交互以执行分析研究。经过多次测试后,该工具的结构似乎在运行研究时导致内存泄漏。奇怪的是,类所在的位置会影响内存的管理方式。这可能吗

有一个特定的函数嵌入到一个类中,该类通过一系列总体类进行访问。内存泄漏仅发生在一个特定软件上。如果我让这个类更接近顶部,即没有嵌入那么多的类,内存泄漏就会消失。或者,如果我跳过与具有此特定功能的power simulation软件的交互,它就会消失,因此我知道它是此软件、此功能和工具结构的特定功能。每次调用此函数时,内存使用量都会增加

我不熟悉跟踪内存泄漏,但已经尝试在控制正在执行的研究数量的最高级别脚本上运行gc.collect(),并且在调用函数之后立即运行,在这两种情况下,它都返回0。Pympler指出内存中没有特定于Python工具的类。有没有一种方法可以更好地针对该函数的内存使用情况

干杯


我还应该注意,导致内存泄漏的函数不是我自己的代码。它是power simulation software provider为访问而开发的类的一部分。

检查
内存\u profiler
:我直接使用psutil来尝试监控内存使用情况,以确定增加的目标。这在某种程度上有所帮助,但现在我需要一些可以刷新由该函数导致的内存构建的东西。在您想出“刷新”它的策略之前,您首先需要找到导致泄漏的实际原因。如果
gc.collect()
没有减少内存使用,那么您就有悬空引用、内部引用或任何类似的引用,您需要找到并修复该部分。内存分析器的存在正是出于这个原因。你有没有一个好的线索可以让我演示如何使用内存分析器来查找这些内部或悬挂的引用?在每次分析迭代中,内存使用量都会上下波动,但内存使用量总体上会增长,因此很难用它来确定函数。我想你要找到导致泄漏的真正原因,我对问题进行了编辑,以包括我所针对的原因功能是电力模拟软件提供商开发的类的一部分。我无法访问此函数中的变量。有没有办法转储与之相关的所有内存?