gpt4 book ai didi

c# - 追踪 .NET Windows 服务内存泄漏

转载 作者:可可西里 更新时间:2023-11-01 08:22:23 24 4
gpt4 key购买 nike

在生产环境中安装我的 Windows 服务之前,我一直在寻找可以执行的可靠测试,以确保我的代码不包含内存泄漏。但是,我在网上能找到的所有内容都是使用任务管理器查看已用内存或一些付费内存分析器工具。

根据我的理解,查看任务管理器并没有多大帮助,也无法确认内存泄漏(以防万一)。

  1. 如何确认是否有内存泄漏?

  2. 有没有免费的工具可以找到内存泄漏的根源?

注意:我使用的是 .Net Framework 4.6 和 Visual Studio 2015 Community

最佳答案

您可以使用任务管理器。GC 应用程序可能会泄漏内存,它会在那里显示。

但是……

免费工具 - “.Net CLR 分析器”

有一个免费工具,它来自 Microsoft,非常棒。这是所有泄漏引用的程序必须使用的。搜索 MS 的网站。

泄漏引用意味着您忘记将对象引用设置为 null,或者它们永远不会离开作用域,这在垃圾收集语言中几乎与不发生的可能性一样大 - 列表建立而不清除,事件处理程序指向委托(delegate),等等.

它相当于内存泄漏的 GC,并且具有相同的结果。该程序会告诉您哪些引用占用了大量内存 - 您将知道它是否应该是这样,如果不是,您可以找到它们并解决问题!

它甚至可以很酷地显示哪些对象分配了哪些内存(这样您就可以追踪错误)。如果您需要解释,我相信有这方面的 youtube。

Memory Usage Visualization

Wikipedia page with download links...

注意:您可能必须将您的应用程序作为服务运行才能使用它。它首先启动,然后运行您的应用程序。您可以使用 TopShelf 或将内容放入从 EXE 运行的 dll 中,实现服务集成(服务主机模式)。

关于c# - 追踪 .NET Windows 服务内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220090/

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