C#(.NET)应用程序中的内存使用率非常高,直到我调用System.GC.Collect()

stu*_*uck 3 .net c# garbage-collection

我写了一个应用程序,它旋转几个线程,每个线程读取几MB的内存.然后每个线程连接到Internet并上传数据.这种情况发生了数千次,每次上传都需要一些时间

我看到一个情况(使用windbg/sos和!dumpheap验证)Byte []没有被自动收集,导致在任务管理器中报告100/150MB的内存

如果我调用System.GC.Collect(),我看到内存大幅下降,下降超过100MB

我不喜欢调用System.GC.Collect()而我的电脑有大量的可用内存.然而,如果有人看着TaskManager他们会担心,认为我的应用程序泄漏可怕.

提示?

Sam*_*ell 12

运行时利用大量可用内存来减少垃圾收集器对应用程序性能的影响.这里的"问题"是普遍缺乏理解(例如你的用户)当系统有更多内存时,可以使用它(否则有什么意义?).