我有一个 WCF 服务,它使用 HTTP 协议。当一个特别大的查询到达系统时,它会创建一个大的 Byte[],它通过缓冲区引导到 HttpChannelListener 并最终到达服务主机本身。即使在 WCF 事务完成后,它仍然存在。这反过来会导致大型对象堆碎片,最终导致应用程序抛出 OOM 异常。
这是 Byte[] 的路径:ServiceHost.channelDispatchers.items._items[0].listener.innerChannelListener.typedListener.bufferManager.innerBufferManager.bufferPools[13].pool.globalPool.items._array[0]
系统对事务使用缓冲的 WCF 通信以确保其可靠。
我能做些什么来防止这些大对象留在内存中吗?