gpt4 book ai didi

C# 内存泄漏??性能监视器中的第 0 代和第 1 代不断增加 - 这是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:14 24 4
gpt4 key购买 nike

我将 C# 2.0 用于多线程应用程序,该应用程序每秒从非托管 dll 接收至少一千个回调,并定期从套接字发送消息。 GUI 保留在主线程上。

我的应用程序主要在启动时创建对象,并在短暂的执行期间定期创建对象。

我遇到的问题是周期性的延迟峰值(通过在函数开始和结束时标记时间戳来衡量),我想这会在 GC 运行时发生。

我运行了 perfmon,这是我的观察结果......

第 0 代堆大小持平,每隔几秒就会出现一次峰值,并出现周期性峰值。

Gen1 堆大小始终在滚动。上上下下

Gen2 Heap Size 遵循一个循环。它不断增加,直到它变平一段时间然后下降。

第 0 代和第 1 代收藏总是在 1 到 5 个单位的范围内增加。第 2 代集合是不变的。

最佳答案

我建议使用内存分析器来了解是否存在真正的内存泄漏。有许多可用的,它们将使您能够快速隔离任何问题。

垃圾收集器是自适应的,会根据您的应用程序使用内存的方式修改其运行频率。就隔离任何问题的根源而言,仅查看生成堆大小将告诉您很少的信息。再质疑它是如何工作的是个坏主意。

RedGate Ants Memory Profiler

SciTech .NET Memory Profiler

EQATEC .NET Profiler

CLR Profiler (Free)

关于C# 内存泄漏??性能监视器中的第 0 代和第 1 代不断增加 - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070249/

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