问题描述
我有一个Windows服务,其中包含内存泄漏.我目前正在使用PerfMon来确定泄漏的位置.当我的服务正在从DataSets和CrystalReports构建报告pdf的过程中时,我的所有堆中的#个字节"正在检查中,并且可以很好地收集它.但是,我的专用字节"的增长非常缓慢,在生成10,000个报告后,比所有堆中的字节"的大小大500 MB.
我的应用程序正在多个线程中生成这些报告.主要问题是,当我查看当前逻辑线程数"和当前已识别线程数"时,计数器无处不在.一秒钟,我将得到一个合理的数字,例如2-10,然后它将飙升至4,294,967,295,然后又回到2-10.
I have a windows service that contains a memory leak. I am currently using PerfMon to determine where the leak is located. While my service is in the process of building report pdf''s from DataSets and CrystalReports, my "# Bytes in all Heaps" is in check, and it being collected just fine. However my "Private Bytes" is very slowing growing, and after producing 10,000 reports is some 500 MB greater than the size of my "Bytes in all Heaps".
My application is running producing these reports in multiple threads. The main issue is that when I look at "# of current logical Threads", and "# of current recognized threads", the counters are all over the place. One second I will have a resonable number like 2-10, and then it will spike to 4,294,967,295, and it''s back to 2-10.
当前逻辑线程数"的计数器花了一段时间,然后才最终保持在4,294,967,236左右,在任一方向上波动了约10.
The counter for "# of current logical Threads" did this spiking for a while, and then just finally stayed up around 4,294,967,236 fluctuating by about 10 in either direction.
是我的PerMon搞砸了,还是我的线程模型?
Is my PerMon messed up, or is it my threading model?
仅当我运行大量报告时才遇到此问题,否则将检查内存.哦,在给定时刻允许执行的线程数被限制在盒子上的内核数.
It''s only when I run large sets of reports that I run into this issue, otherwise the memory is kept in check. Oh, and the number of threads that are allowed to execute at a given moment is limited to the number of cores on the box.
推荐答案
这篇关于Perf Mon-到处都有线程数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!