【发布时间】:2010-09-11 00:19:01
【问题描述】:
我有一个多线程应用程序,它可以操作内存中的数据(没有数据库或网络访问权限)。我在两台机器上试过这个,一台是Xeon双四核CPU,另一台是双拨号核。生成了 5 个线程。
然后这个多线程进程启动它运行得非常快,5 核 CPU 使用率为 60%,物理内存为 RAM 容量的 50%。 (来自任务管理器的信息)。在大约 1/3 之后,它开始变慢,CPU 利用率下降到略低于 20%。到 2/3 秒时,速度太慢了,完成后三分之一需要 1 天,而前 1/3 需要半小时。
该进程创建了许多SortedLists和Lists,所以我开始怀疑垃圾收集器无法应对,虽然任务管理器内存使用情况还不错......我想尝试强制GC释放立即未使用的集合,这是合理的甚至可行的吗?为什么 CPU 利用率会下降?
【问题讨论】:
标签: c# multithreading performance cpu-usage garbage-collection