COM+ 低内存激活门概念

通常,如果具有单线程单元 (STA),则不需要同步,因为这种单元会提供同步。 当具有多线程单元 (MTA) 和自由线程对象时,同步变得很重要。 过去,自由线程对象必须处理锁定。 可以通过设置组件的同步属性来消除使用锁定的需要。

当服务器的资源无法有效应对峰值负载时,通常会发生可靠性问题。 当服务器没有足够的物理资源来满足峰值需求时,可能会耗尽虚拟内存。 如果用户代码或系统代码未正确处理内存分配故障,这将成为问题。 服务器开始减慢速度,内存耗尽后,内存分配会失败。 服务器执行错误路径来处理分配故障。 如果错误路径包含服务器上运行的系统或用户代码中的错误,则很难安全地捕获和处理错误。

COM+ 尝试防止出现在服务器上执行这些错误路径的情况。 COM+ 可通过低内存激活门功能主动监视系统中的内存负载,并确保在执行用户代码之前提供合理的内存量。 如果应用程序可用的虚拟内存百分比低于固定阈值,则创建 COM+ 服务器应用程序或对象之前激活会失败(如下图所示)。 如果正常运行的这些激活失败,低内存激活门功能可最大程度地减少与用户代码中的内存分配相关的问题,从而显著提高系统可靠性。

Diagram that shows the relationship between a COM+ application and a low-memory activation gate.

低内存激活门功能仅适用于 COM+ 应用程序中安装的已配置 COM 组件。

低内存激活门功能的工作原理

低内存激活门功能根据激活类型使用不同的固定阈值级别。 创建 COM+ 服务器应用程序时,如果超过 10% 的虚拟内存可用,则 COM+ 允许激活。 如果可用内存不到 10%,则 COM+ 会进行测试分配,以确定分页文件是否可以扩展以适应新的内存负载。 如果分页文件扩展,则会创建服务器应用程序。 如果无法扩展分页文件,激活将失败,并且不分配内存。

创建对象时的过程与此类似。 在这种情况下,如果 5% 以上的虚拟内存可用,则 COM+ 允许激活。 如果可用内存不到 5%,COM+ 将继续执行测试分配。 同样,如果测试分配扩展分页文件,则会创建对象。 否则,激活将失败。

低内存激活门的固定阈值级别当前不可配置。 因此,没有与此功能关联的任务。