我正在尝试使用 ants 内存分析器查找内存泄漏,我遇到了一个新术语:
固定对象。
谁能给我一个简单明了的关于这些对象是什么的解释,我如何固定/取消固定对象,并检测谁固定了对象?
谢谢
最佳答案
固定对象是不允许移动的对象。垃圾收集器通常会压缩内存,因为它将所有对象移动到“一个或多个集群”。这是为了创建大块的可用空间。
这基本上意味着如果其他人(外部)有一个指向对象内存地址的指针,这可能指向随机内容 - 因为对象已经移动。
固定一个对象告诉 GC 不要移动它。这通常是无用的,只有在使用指针时才有意义——比如在使用 PInvoke 时。有时您需要将地址转入结构(在内存布局术语中),如果这是在类中实现的,则必须将其固定。
具体回答:
- 您无法找出谁固定了一个对象。
- 固定是通过 FIXED 语句完成的。这仅允许在不安全的代码中使用。
检查:
http://msdn.microsoft.com/en-us/library/f58wzh21%28VS.80%29.aspx
关于c# - 什么是固定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2490912/