【发布时间】:2011-01-13 21:10:58
【问题描述】:
我有一个 WCF 服务托管在 IIS 中,使用 net.tcp 绑定并配置为 PerCall 实例。出于测试目的,我有一个完全不执行任何操作的操作。
每次客户端连接并调用操作时,w3wp.exe 进程的内存使用量都会增加,并且在客户端关闭连接后,内存使用量不会减少。经过反复调用,内存已经从最初的 20MB 增加到 500MB 甚至更多。
这是正常行为吗?
【问题讨论】:
我有一个 WCF 服务托管在 IIS 中,使用 net.tcp 绑定并配置为 PerCall 实例。出于测试目的,我有一个完全不执行任何操作的操作。
每次客户端连接并调用操作时,w3wp.exe 进程的内存使用量都会增加,并且在客户端关闭连接后,内存使用量不会减少。经过反复调用,内存已经从最初的 20MB 增加到 500MB 甚至更多。
这是正常行为吗?
【问题讨论】:
当您使用 PerCall Instance Context 模式调用服务时,应在方法返回后释放内存。由于在您的方案中没有发生这种情况,因此请尝试在您的服务上实现 IDisposable 接口,以便能够显式控制您的服务的处置。还要确保在使用后立即关闭客户端上的代理连接。
【讨论】: