有没有办法找到当前在内存中的对象,包括它们的名称、它们的位置和模块名称等?
我的进程 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.get_referrers
获取对象的 GC 跟踪的引荐来源网址,但并非所有引用都为 GC 所知。
即使您确保不再需要的对象无法访问,并且即使它们的内存被回收,这仍然不意味着 Python 会真正将内存返回给操作系统。在这一切结束时,您的内存使用量可能仍为 250 MB。
关于Python - 在内存中查找当前对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62686644/