gpt4 book ai didi

C# - 以编程方式尝试检查代码块中的内存泄漏的方法

转载 作者:太空狗 更新时间:2023-10-29 21:30:12 25 4
gpt4 key购买 nike

我正在尝试以编程方式尝试准确确定托管 .NET 代码块中是否存在潜在内存泄漏的可行性。这样做的原因是为了隔离一些看起来正在泄漏内存的代码块,然后使用标准分析器进一步确定泄漏的实际原因。在我的特定业务案例中,我将加载一个第 3 方类,它扩展了我的一个类以检查它是否存在泄漏。

首先想到的方法是这样的:

  • 等待 GC 运行。
  • 从 GC 获取当前分配的内存。
  • [运行托管代码块。]
  • 等待 GC 运行。
  • 从 GC 中获取当前分配的内存,并从运行代码块之前记录的分配内存中减去。如果在运行的代码块中分配的所有对象都被适本地取消引用并被收集,理论上差异应该(接近)0 是否正确?

当然,直接的问题是可能会等待……等待……等待非确定性 GC 运行。如果我们跳过这一方面,则用于确定代码块是否泄漏任何内存的计算结果可能会有很大差异,并且不一定准确,因为当时可能没有收集到某些项目。

上面的内容是否是我尝试准确确定代码块是否正在泄漏内存的最佳选择?或者还有其他在现实生活中使用的工作方法吗?谢谢。

最佳答案

就我个人而言,我永远不敢自己做内存分析。我担心我要么不具备完整的知识,要么会花费无穷无尽的时间。

相反,我成功地使用了内存分析器,如 Red Gate's ANTS Memory Profiler .

关于C# - 以编程方式尝试检查代码块中的内存泄漏的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299216/

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