gpt4 book ai didi

.net - .NET Windows服务,线程和垃圾回收(可能发生内存泄漏)

转载 作者:行者123 更新时间:2023-12-03 12:53:15 28 4
gpt4 key购买 nike

我正在开发.NET Windows服务,该服务创建几个线程,然后使用这些线程将打印作业发送到打印机(每个打印机都有一个线程)。我有一些问题,有时可以通过重新启动服务来解决。当服务运行了一段时间后,还会出现一些问题。这使我怀疑可能是内存泄漏。因此,有两个问题:

如果垃圾回收器是在线程内部创建的,垃圾回收器会收集该对象吗?或者该对象在线程停止/终止之前会一直存在吗?

我可以使用哪些工具来监视Windows服务和以编程方式启动的线程使用的内存量?

最佳答案

所有对象都在线程内部创建。曾经执行的每条指令都在线程内。在没有对象的实时引用之后,对象将在某些时候被垃圾回收。对象不“属于”在其上创建的线程。

为了监视服务,您可以使用perfmon,它具有大量的计数器来处理诸如垃圾收集之类的事情。要对可能泄漏对象的位置进行更详细的分析,应使用探查器。如果您的程序也可以作为非服务程序运行,则所有这些操作都可能会变得更简单。 (您可能希望将其分为“启动器”部分,然后是可以从服务或控制台应用程序中使用的库。)

关于.net - .NET Windows服务,线程和垃圾回收(可能发生内存泄漏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605444/

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