コンピュータサイエンスにおいて、プールとは、使用時に取得されたメモリやその後解放されたメモリではなく、メモリ内に保持され、すぐに使用できるリソースの集合です。この文脈では、リソースは、プロセス外部のファイルハンドルなどのシステムリソース、またはオブジェクトなどの内部リソースを指す場合があります。プールクライアントは、プールからリソースを要求し、返されたリソースに対して必要な操作を実行します。クライアントがリソースの使用を終了すると、リソースは解放されて失われるのではなく、プールに戻されます。[説明が必要]
リソースのプール化により、リソースの取得に関連するコストが高く、リソースの要求率が高く、同時に使用されるリソースの総数が少ない状況で、応答時間が大幅に短縮されます。プールでは、リソースがすでに取得されているため、取得に必要な時間が予測できるため、待ち時間が懸念される場合にもプール化は役立ちます。これらの利点は、システム コールを必要とするシステム リソース、またはデータベース接続、ソケット接続、スレッド、メモリ割り当てなどのネットワーク通信を必要とするリモート リソースに主に当てはまります。プール化は、計算コストが高いデータ、特にフォントやビットマップなどの大きなグラフィック オブジェクトにも役立ち、基本的にデータキャッシュまたはメモ化手法として機能します。
プールの特殊なケースとしては、接続プール、スレッド プール、メモリ プールがあります。
オブジェクトプール
プールはオブジェクトにも使用できます。この場合、プールはオブジェクト指向言語でプールを実装するための設計パターン、たとえばオブジェクト プール パターンを指します。オブジェクト自体は外部リソースを保持せず、メモリのみを占有しますが、すでに作成されたオブジェクトはオブジェクトの作成時に必要なメモリ割り当てを回避します。オブジェクト プールはオブジェクト作成のコストが高い場合に便利ですが、特定の状況では、この単純なオブジェクト プーリングは効率的ではなく、実際にパフォーマンスが低下する可能性があります。[1]
参考文献
- ^ 「Java の理論と実践: パフォーマンスに関する都市伝説の再考」ibm.com 2005 年 9 月 27 日。2011 年 12 月 29 日時点のオリジナルよりアーカイブ。2013年 10 月 31 日閲覧。
