软件环境:
win2000+.net2003+C#
我建立了一个服务项目,由于程序中频繁的使用链表IList导致内存不能自动回收。因此我采用了 java代码: GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect(); 来回收内存。在控制台方式下没有任何问题,内存被回收了并且程序运行正常。但是在服务方式下OnStart这个线程会被挂起,导致程序不能运行。
我认为WaitForPendingFinalizers函数会挂起任何线程去回收内存,但是不会挂起主线程即main();有于.net下会收内存是非常模糊的。我看过很多资料,没有什么人能说清楚。并且手动回收内存的方式只有显示的调用GC。所以我不知道这个是不是.net里面的一个问题,不能在服务程序中调用WaitForPendingFinalizers()函数,不知道有什么解决的办法?
win2000+.net2003+C#
我建立了一个服务项目,由于程序中频繁的使用链表IList导致内存不能自动回收。因此我采用了 java代码: GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect(); 来回收内存。在控制台方式下没有任何问题,内存被回收了并且程序运行正常。但是在服务方式下OnStart这个线程会被挂起,导致程序不能运行。
我认为WaitForPendingFinalizers函数会挂起任何线程去回收内存,但是不会挂起主线程即main();有于.net下会收内存是非常模糊的。我看过很多资料,没有什么人能说清楚。并且手动回收内存的方式只有显示的调用GC。所以我不知道这个是不是.net里面的一个问题,不能在服务程序中调用WaitForPendingFinalizers()函数,不知道有什么解决的办法?
GC.Collect();
就可以了吧