gpt4 book ai didi

c# - ASP.NET/WCF : Why are logical/physical threads dropping on full GC cycle?

转载 作者:行者123 更新时间:2023-11-30 18:09:32 28 4
gpt4 key购买 nike

最近我记录了几个小时的 WCF 服务的 .NET 内存计数器。该服务托管在 Win2k8、8 核、x64 和 20GB 内存的 IIS 中。

我可以看到 GC 非常健康,大约只执行一次完整收集。每 2 小时一次!

我注意到在同一时间段内,物理线程和逻辑线程的数量都在增加。当完全收集发生时,物理和逻辑线程的数量回落并继续上升到同一水平。

为什么 GC 完整收集周期和线程数下降相关?为什么线程数不断增加?

这是纯 ASP.NET/WCF 线程模型。没有生成自定义线程等。

谢谢,亚历克斯

最佳答案

看起来答案确实非常简单:线程会随着线程池的增长和缩小而创建和消亡。通常,这些线程具有相对较长的生命周期,这意味着它们会在第 2 代结束。这就是为什么它们自然地只在完整的 GC 周期中进行清理。

有趣的一点是,一个内存管理得很好的应用程序最终可能会出现大量死线程,我在 WinDbg 中观察到了这一点。这是因为 Full GC 可能只在几个小时甚至几天后发生!一些 MS 博客说,那些死线程并不是一件好事,因为相应的非托管 C++ 线程对象似乎非常耗费资源(不幸的是再也找不到该死的博客了……)。我想知道这是否是诱导 Full GC 在特定时间间隔内有意义的罕见情况之一。

关于c# - ASP.NET/WCF : Why are logical/physical threads dropping on full GC cycle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2419838/

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