为了账号安全,请及时绑定邮箱和手机立即绑定

.NET 在内存转储中固定句柄,没有互操作或固定

.NET 在内存转储中固定句柄,没有互操作或固定

C#
Qyouu 2022-10-23 13:34:46
我正在调查生产中的内存转储,我看到很多关于“固定句柄”的引用,如下面的屏幕截图所示(来自 Jetbrains dotMemory)。我们没有使用固定的,我们没有对这段代码的非托管资源做任何事情,所以我想问这怎么可能?SiteManager 类是单例的,所以有private static SiteManager _instance;代码中的字段永远保持对该对象的引用。但我看不出这会导致固定的任何原因。
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

最有可能的是,对象数组是用于存储静态引用的内部 CLR 对象之一。所以它不是你的对象固定,它是保持静态引用固定的数组。

[编辑] 我说“最有可能”是因为我不知道你的程序。如果你作为这个程序的作者,确定它不是“你的” object[],那肯定它是一个保持“静态引用 GC 根”的数组。

在这里这里你可以阅读一些关于 GC 根的信息

但是由于内部.NET 实现细节似乎没有关于对象数组的内容。我从我作为 dotMemory 开发人员的经验中了解到这一点。


查看完整回答
反对 回复 2022-10-23
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信