我有一个在 .NET Framework 3.5 上运行的 C# Windows 服务,它显示出不断增长的 GC 句柄(使用 Windows Server 2003 上的系统监视器查看)。
我确保所有资源都被正确处理,并且我的代码中没有终结器。
“Large Object Heap size”和“# Bytes in all Heaps”相对而言是静态的,我可以看到“% Time in GC”表明正在发生垃圾收集。
“Private Bytes”计数器也在增加。
这种症状导致我在任务管理器中的“内存使用量”以每天大约 35 MB 的速度增长,这是不可接受的,因为该服务基本上是针对 Oracle 10g 运行一个简单的 SELECT 查询并每 5 秒使用 .NET TraceSources。值得一提的是,TraceSource 使用 .NET 侦听器对象输出到 Windows 事件日志和文本文件。
有谁知道为什么“# GC Handles”不断增加,因为我相信这与我的“内存使用”增加有关?