python - Python - 在内存中查找当前对象
问题描述
有没有办法找到当前在内存中的对象,包括它们的名称、它们的位置和模块名称等?
我的进程 Python.exe 在任务管理器中的 main() 方法之前的内存占用为 15MB。
在 main 方法完成第一次迭代后,进程 Python.exe 内存大小为 250MB。
我想了解哪些对象仍在内存中,以便我可以删除它们
while True:
# print current object details
main()
# print current object details
解决方案
不,没有办法在 Python 中找到所有对象。此外,大多数对象没有名称,并且对象“位置”不像您认为的那样工作。
与您要查找的内容最接近的是gc.get_objects
,它返回所有 GC 跟踪对象的列表。这不是所有对象的列表,也没有告诉您为什么对象仍然存在。您可以使用 获取对象的 GC 跟踪的引用gc.get_referrers
,但并非所有引用都为 GC 所知。
即使您确保不再需要的对象无法访问,并且即使它们的内存被回收,这仍然不意味着 Python 会真正将内存返回给操作系统。在这一切结束时,您的内存使用量可能仍为 250 MB。
推荐阅读
- html - 仅当低于特定屏幕尺寸时,如何忽略文本链接悬停 CSS 上的显示图像
- javascript - 未定义用户 w/ Discord.js(头像命令)
- c# - 多层字典C#
- perl - PDF 无法从 Gmail 中正确预览或下载
- docker - 在 Google Cloud Build 中运行自定义映像构建步骤时,如何将更改保存到 Docker 容器并将其导出为 Docker 映像?
- reinforcement-learning - 软演员评论家 - 损失没有收敛
- regex - 匹配除用户帐户和频道网址之外的所有 YouTube 网址
- ruby - 我的算法的时间复杂度是 O(n log n) 吗?
- javascript - 将 Google 工作表单元格转换为 JS 数组?
- r - R中基于多个条件的查找表