gpt4 book ai didi

asp.net - 对象未被垃圾回收,但不包含 gcroot

转载 作者:行者123 更新时间:2023-12-02 03:36:07 24 4
gpt4 key购买 nike

我们的网络应用程序遇到了棘手的问题。 (Asp.net 2.0 Win服务器2008)

我们网站的内存使用量不断增长,尽管我希望它保持在相当静态的水平。 (我们有少量数据存储在状态中)。

为了找出问题所在,我运行了 System.GC.Collect();几次,获取内存转储,然后将此内存转储加载到 WinDbg 中。

当我执行 DumpHeap -Stat 时,我在内存中得到了一个异常大的特定类型的数字。

0000064280580b40 713471 79908752 付款选项

因此,为这种类型执行 DumpHeap -MT,我得到了一堆对象引用。我选择其中的随机数,执行 !gcroot,命令返返回告没有引用它。

对我来说,这正是 GC 应该收集这些项目的时间,但由于某种原因,它们一直处于未完成状态。

任何人都可以解释可能发生的情况吗?

最佳答案

您可以尝试使用 sosex.dll Windbg 是一个为帮助 .NET 调试而编写的扩展。有一个名为 !refs 的命令,它与 !gcroot 类似,它会显示引用某个对象的所有对象,此外还会显示它引用的所有对象。

在作者网站上的示例中,!refs 用于对象,输出如下所示:

0:000> !refs 0000000080000db8
Objects referenced by 0000000080000db8 (System.Threading.Mutex):
0000000080000ef0 32 Microsoft.Win32.SafeHandles.SafeWaitHandle

Objects referencing 0000000080000db8 (System.Threading.Mutex):
0000000080000e08 72 System.Threading.Mutex+<>c__DisplayClass3
0000000080000e50 64 System.Runtime.CompilerServices.RuntimeHelpers+CleanupCode

关于asp.net - 对象未被垃圾回收,但不包含 gcroot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com