如何解决作为引用者的“框架”是什么意思?
我需要处理大量(超过 40,000 个)的 zip 文件。我编写了用于打开每个 zip 文件、从文件中提取所需信息并将关键信息插入数据库的代码。当我为单个 zip 运行它时,一切正常。但是,当我开始运行程序来处理所有内容时,它会崩溃。
我使用 spark.sql.crossJoin.enabled=true
命令观察了内存分配,可以看到内存消耗在稳步增长。我没有使用 python3 附带的库之外的任何库,所以它不是一些我忘记发布某些东西的自定义代码。
在主处理函数返回之前,我查看了一些对象的 top
,我看到了:
gc.get_referrers()
我还查看了垃圾收集模块并打印了 [<frame at 0x232b270,file '/reports.py',line 179,code visit>,<frame at 0x171d840,code visit>]
的输出。我了解每个字段是什么,但我不知道如何解释函数返回的这些列表。话虽如此,我正在程序完成处理每个 zip 后打印统计信息,并且 gc.get_stats()
字段没有改变。当我的程序移至下一个 zip 文件时,我预计收集的对象数量会不断增加。
collected
我不知道如何找到这个内存泄漏。我最好的猜测是有一个无法访问的对象引用了一些阻止它被垃圾收集的东西。到目前为止,我所拥有的两个引用者和垃圾收集数据是我所拥有的,但我不熟悉如何获取更多信息或如何运行这些数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。