次の方法で共有


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+ はテスト割り当てを行って、ページング ファイルが新しいメモリ負荷に対応するように拡張できるかどうかを確認します。 ページング ファイルが拡張されると、サーバー アプリケーションが作成されます。 ページング ファイルを拡張できない場合、アクティブ化は失敗し、メモリは割り当てられません。

このプロセスは、オブジェクトを作成する場合と同様です。 この場合、COM+ では、5% を超える仮想メモリが使用可能な場合にアクティブ化が許可されます。 使用できる割合が 5% 未満の場合、COM+ はテスト割り当てを続行します。 この場合も、テスト割り当てによってページング ファイルが拡張されると、オブジェクトが作成されます。 拡張されない場合、アクティブ化は失敗します。

低メモリのアクティブ化ゲートの固定しきい値レベルは、現在構成できません。 このため、この機能に関連付けられているタスクはありません。