我有一个多线程的应用程序,操作内存中的数据(没有数据库或网络访问)。我在两台机器上尝试过,一台是Xeon双四核CPU,另一台是双双核。生成了5个线程。
然后这个多线程进程启动后非常快,并且CPU使用率为5个核心的60%,物理内存为RAM容量的50%(来自任务管理器)。当它完成1/3时,它开始变慢,CPU利用率降至略低于20%。当它到达2/3时,它变得非常缓慢,最后1/3需要1天才能完成,而第一1/3只需半小时。
该进程创建了许多SortedList和List,因此我开始怀疑垃圾回收器无法处理,尽管任务管理器内存使用情况并不那么糟糕... 我想尝试强制GC立即释放未使用的集合,这是合理的或可行的吗?为什么CPU利用率会下降?
然后这个多线程进程启动后非常快,并且CPU使用率为5个核心的60%,物理内存为RAM容量的50%(来自任务管理器)。当它完成1/3时,它开始变慢,CPU利用率降至略低于20%。当它到达2/3时,它变得非常缓慢,最后1/3需要1天才能完成,而第一1/3只需半小时。
该进程创建了许多SortedList和List,因此我开始怀疑垃圾回收器无法处理,尽管任务管理器内存使用情况并不那么糟糕... 我想尝试强制GC立即释放未使用的集合,这是合理的或可行的吗?为什么CPU利用率会下降?