MemoryStream.SetLength(0)和MemoryStream.Capacity = 0不清除已用内存

bbo*_*sak 2 .net c# garbage-collection memorystream

我有一个流媒体的程序,它创建两个巨大的MemoryStreams,然后在完成后需要将它们归零.问题是,在我调用BOTH MemoryStream.SetLength(0)后,内存似乎没有被回收; 和MemoryStream.Capacity = 0. GC.Collect()似乎解决了这个问题,但我听说这是糟糕的编程习惯,因为它会导致应用程序中的所有线程挂起; 虽然挂起的线程在短时间内不会成为问题,但需要清除内存.但是,如果问题有另一种解决方法,那就太好了.有什么建议?

Tho*_*que 5

GC.Collect()似乎解决了这个问题

所以没有问题......为什么你认为你需要强制GC一次收集内存?当系统认为有必要时,它将完成.不要试图超越GC;)