【发布时间】:2021-08-27 17:05:02
【问题描述】:
有没有办法在 Python 中访问内存堆?我有兴趣能够访问在运行实例的内存中分配的所有对象。
【问题讨论】:
-
如果我没记错也没有误解问题,你可以
globals() -
@Sujay:这只会显示在当前模块的全局范围内可见的内容。添加
locals()还可以让您查看给定函数范围内的局部变量,但即便如此,您也看不到闭包/类/实例范围,也看不到在其他局部范围或其他模块的全局变量中分配的变量. -
重点是,“堆”是整个程序中每个动态分配对象的公共存储(在 CPython 中,C 堆栈本身几乎没有存储任何观察者感兴趣的内容;Python 级别的调用stack 本身也是堆分配的),它不仅仅是在任何给定时间点在 LEGB 范围内直接可见的少数东西。