gpt4 book ai didi

c# - .Net Garbage Collector - 查看在运行时提升到 Gen2 的内容

转载 作者:太空狗 更新时间:2023-10-29 18:33:04 24 4
gpt4 key购买 nike

我的程序正在以非常高的速率(大约 1MB/秒)将内存提升到 Gen2,当发生 Gen2 收集时它会导致性能下降。我试图了解哪些对象被提升的每一次尝试都失败了——主要是因为当我在 windbg 中打开 2 个转储时,用于增加 Gen2 大小的内存被标记为“空闲”。这让我怀疑是 Pinned 对象导致了问题,但 perfmon 统计数据显示 Pinned 对象的数量非常低(大约 2-4)。

我现在想尝试的是在运行时以某种方式识别哪些对象被提升到 Gen2。有没有办法做到这一点?

最佳答案

您可以使用 WinDbg 来调试此类问题。在垃圾收集例程上设置断点,检查托管堆,让垃圾收集发生,然后再次检查托管堆以查看现在哪些对象在 Gen2 中。

这里有一些链接可以开始:

Tracking down managed memory leaks

How to iterate on the objects present in the .NET managed heap?

Tess Ferrandez' blog

Investigating .NET Memory Management and Garbage Collection

抱歉,这不是您问题的直接、详细的答案,但它应该给您一个起点。

关于c# - .Net Garbage Collector - 查看在运行时提升到 Gen2 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5217553/

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