我编写了一个应用程序,它会启动几个线程,每个线程会读取数兆字节的内存。然后,每个线程会连接到互联网并上传数据。这种情况会发生成千上万次,每次上传需要一些时间。
我发现(使用windbg/sos和!dumpheap进行验证)Byte[]没有被自动回收,导致任务管理器中报告100/150MB的内存。
如果我调用System.GC.Collect(),我会看到内存大幅下降,超过100MB。
我不喜欢调用System.GC.Collect(),而且我的电脑有大量可用内存。但是,如果有人查看任务管理器,他们会感到担忧,认为我的应用程序泄漏严重。
有什么建议吗?
我发现(使用windbg/sos和!dumpheap进行验证)Byte[]没有被自动回收,导致任务管理器中报告100/150MB的内存。
如果我调用System.GC.Collect(),我会看到内存大幅下降,超过100MB。
我不喜欢调用System.GC.Collect(),而且我的电脑有大量可用内存。但是,如果有人查看任务管理器,他们会感到担忧,认为我的应用程序泄漏严重。
有什么建议吗?