我的WCF服务传输大文件(200Mo),并且我看到内存使用量不断增长(1Go,2Go ... 8Go)。这是Visual Studio快照提供的内存:
Object Number Size (Bytes)
BufferManagerOutputStream 3 266 668 448
...
这里是服务配置:
BasicHttpBinding httpb = new BasicHttpBinding();
httpb.MaxReceivedMessageSize = int.MaxValue;
httpb.MaxBufferPoolSize = 0;
您对调查和解决有任何想法吗?
答案 0 :(得分:0)
对于服务器和客户端之间的大型文件传输,我们使用MTOM编码来减少开销。您还可以在服务合同上实现IDisposable接口来管理内存。
我认为内存不会因WCF I / O传输而泄漏。我建议您可以使用VS2017诊断工具检查数据对象在哪里增加。
您可以参考以下文档。
https://docs.microsoft.com/en-us/visualstudio/profiling/memory-usage?view=vs-2017
https://blogs.msdn.microsoft.com/visualstudio/2016/02/15/analyze-cpu-memory-while-debugging/