2.5.3 バッファの取得と解放
- 〈この項の構成〉
(1) バッファの取得
TP1ConnectionManagerクラスは,GetMessageBufferメソッドのパラメタに指定されたメッセージ長を保持できるメッセージバッファを生成します。
バッファ取得時のバッファプールの構造を,次の図に示します。
|
メッセージバッファは,TP1ConnectionManagerクラスがプール管理するバッファを内部に取得します。取得するバッファは,GetMessageBufferメソッドのパラメタに指定されたメッセージ長を保持できる,最も小さいサイズのバッファです。
指定されたメッセージ長を保持できる,最も小さいサイズのバッファがバッファプール内に存在しない場合は,バッファを新規生成してメッセージバッファを生成します。この場合,バッファプールのバッファが解放されるまでは,GetMessageBufferメソッドが呼び出されるたびにバッファを新規生成し,メッセージバッファを生成します。
- 注意事項
-
GetMessageBufferメソッドに,構成定義で指定したバッファプールサイズの最大値を超えるサイズが指定された場合は,最大サイズ(1048576バイト)のバッファプールからバッファを取得します。ただし,このメッセージバッファが最大サイズのバッファを取得するのは,処理を続行させるためです。アプリケーションが最大サイズのバッファを何度も使い続けると,性能およびリソースへの影響が大きくなります。そのため,構成定義で指定するバッファサイズの値は,アプリケーションの用途に合わせて見積もってください。
なお,RPC送受信メッセージの最大長拡張機能を使用する場合は,GetMessageBufferメソッドに構成定義で指定したバッファプールサイズの最大値を超えるサイズが指定されたときでも,<option>要素のmaxMessageSize属性で指定した値(×1048576バイト)が設定されます。