python默认字典内存泄漏

标签 python memory-leaks

我不确定这是否是内存泄漏,但看起来像是内存泄漏,但我在这里找不到解决方案。 我无法粘贴完整的代码,但这是泄漏的部分:

self.dctSpreads = defaultdict(list)

lstMat = ['2Y','3Y','4Y','5Y','6Y','7Y','8Y','9Y','10Y','12Y','15Y','20Y','25Y','30Y']

lstSpreads = ['A','B','C','D','E']

def __GetSpreadMDValues__(self):
        lstSpreadRIC = []
        lstSpreadVal = []

        #Construct proper RICs to extract the data
        for i in range(0, len(self.lstSpreads)):
            for j in range(0, len(self.lstMat)):
                lstSpreadRIC.append(self.lstMat[j])
            #get market data
            lstSpreadVal = self.__GetListDataSnaps__('FIELD1', lstCSASpreadRIC)
            self.dctSpreads[self.lstSpreads[i]] = lstCSASpreadVal
            lstSpreadRIC = []
            lstSpreadVal = []

问题是 self.dctSpreads (这是具有 float 值的列表的字典)增加了内存使用量,但在我处理完类对象后从未释放它。我尝试编写一个简单的析构函数,例如调用方法

def Destructor(self):
        gc.collect()

在完成运行之前,但这没有帮助。

任何想法都值得赞赏。

最佳答案

Python 何时将未使用的内存可供 Python 脚本使用以及何时将其返回操作系统是有区别的。前者在没有对对象的引用时立即发生(假设是 CPython),而后者可能直到 Python 解释器退出才发生,具体取决于分配的对象类型。这是正常且预期的行为。

关于python默认字典内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16306936/

相关文章:

python - 谁删除了python中的内存?

python - 使用 SQLite 了解 PonyORM 中的内存消耗

java - c3p0连接池内存泄漏重新部署tomcat

python - Scipy 期望函数未给出预期输出

python - Seaborn 散点图 - 标签数据点

python - 用 pandas 中的其他列子字符串替换子字符串

c 清理未使用的线程

java - 多线程使用中的变量声明,Java [内存泄漏问题]

ios - 使用 Instruments 追踪内存泄漏 Xcode 5 和 iOS 7

python - 识别 Django Rest Framework 中的唯一匿名用户