1

我有一个 COM+ 数据服务,它被配置为使用最小和最大池大小为 1 的对象池。所以我有一个单例。在某些情况下,我的对象计数(引用此实例的客户端数量)超过 1 并稳步增加。实例创建和对其方法的一次调用被包装在 using stmt 中,因此该实例应正确返回到池中。同时发生这种情况,我看到一些网络问题(SQLServer 的传输级错误异常)。我怀疑那里可能存在一些相关性。

对象计数如何超过 1?

4

1 回答 1

1

您将看到 JIT(即时激活)与对象池的效果。

使用 JIT,多个客户端可以引用同一个对象,并且所有方法调用都可以由同一个实例提供服务。每个客户端只保留对上下文对象的引用。调用方法后,如果该方法在上下文中设置了 Done 标志,则该对象与上下文断开连接并放回池中,以供来自另一个客户端的另一个方法调用使用。这可以节省资源,因为单个对象可以为许多客户端提供服务。

请参阅以下内容: COM+ 即时激活概念

于 2009-01-27T20:41:40.160 回答