【发布时间】:2010-04-09 06:21:29
【问题描述】:
我正在开发一个 .NET Windows 服务,它创建了几个线程,然后使用这些线程将打印作业发送到打印机(每个打印机都有一个线程)。我有一些问题,有时可以通过重新启动服务来解决。服务运行一段时间后也会出现一些问题。这让我怀疑可能存在内存泄漏。所以,有几个问题:
如果对象是在线程中创建的,垃圾收集器会收集它吗?还是在线程停止/终止之前对象会一直存在?
我可以使用哪些工具来监控 Windows 服务和我以编程方式启动的线程使用的内存量?
【问题讨论】:
-
可能是打印机代码使用了非托管代码,这些代码被保留而不发布。如果您在单独的应用程序域中加载打印代码,您至少可以将其卸载以释放内存并防止重新启动服务。
标签: .net multithreading service garbage-collection