![]() | この記事はカテゴライズされていないか、不十分です。 |
![]() |
メモリプール (Memory pools) は、en:固定サイズブロック割り当てとも呼ばれ、メモリ管理にプールを使用することで、mallocまたはC++のnew演算子に匹敵する動的メモリ確保を可能にするプール。
多くのリアルタイム・オペレーティング・システムは、トランザクション処理機能などのメモリプールを使用する。
これらの実装ではブロック・サイズが可変であるために断片化が発生するため、パフォーマンスの点から、リアルタイムシステムでの使用は推奨できない。より効率的な解決策はメモリプール(memory pool)と呼ばれる同じサイズの多数のメモリ・ブロックを事前に割り当てることである。アプリケーションは実行時にハンドルで表されるブロックの割り当て、アクセス、および解放ができる。
WebサーバーNginxのような一部のシステムでは、メモリプール という用語は、後で一度に割り当てを解除できる可変サイズの割り当てのグループを指すために使用される。
これはリージョン としても知られており、リージョンベース・メモリ管理を参照されたい。
![]() |
簡易メモリプール・モジュールは(たとえば)、コンパイル時にモジュールをデプロイするアプリケーションに最適化されたブロック・サイズで3つのプールを割り当てることができる。
アプリケーションは次のインターフェイスを通じてメモリの割り当て、アクセス、解放を行うことができる:
unsigned int
で実装できる。モジュールはハンドルをプール・インデックス、メモリ・ブロック・インデックス、バージョンに分割することで内部的に解釈できる。プールとメモリ・ブロック・インデックスにより、ハンドルを使用して対応するブロックへの高速アクセスが可能になる一方、新しい割り当てごとにバージョンが増加するため、これによりメモリ・ブロックが既に解放されている(保持期間が長すぎる)ハンドルを検出できる。![]() |
利点
欠点