Loading article…

メモリプール(固定サイズブロック割り当てとも呼ばれる)は、動的メモリ割り当てを可能にするメモリ管理のためのプールの使用法です。動的メモリ割り当ては、 mallocやC++のnew演算子などの手法を用いて実現できます。これらの実装は確立され信頼性も高いものの、ブロックサイズが可変であるため断片化が発生しやすく、パフォーマンス上の問題からリアルタイムシステムでの使用は推奨されません。より効率的な解決策は、メモリプールと呼ばれる同じサイズのメモリブロックを事前に割り当てておくことです。アプリケーションは、実行時にハンドルで表されるブロックを割り当て、アクセスし、解放することができます。
多くのリアルタイムオペレーティングシステムは、トランザクション処理機能などのメモリプールを使用します。POCOはメモリプールクラスを提供しますPoco::MemoryPool。
NginxのようなWebサーバーなど、一部のシステムでは、可変サイズのメモリ割り当てのグループを指すのに「メモリプール」という用語を使用します。これらのメモリは後でまとめて解放できます。これは「リージョン」とも呼ばれます。リージョンベースのメモリ管理を参照してください。
シンプルなメモリプールモジュールは、例えば、モジュールをデプロイするアプリケーションに合わせて最適化されたブロックサイズを持つ3つのプールをコンパイル時に割り当てることができます。アプリケーションは、以下のインターフェースを通じてメモリの割り当て、アクセス、および解放を行うことができます。
unsigned int。モジュールは、ハンドルをプールインデックス、メモリブロックインデックス、およびバージョンに分割することで、内部的にハンドルを解釈できます。プールインデックスとメモリブロックインデックスにより、ハンドルを持つ対応するブロックに高速にアクセスできます。一方、新しい割り当てごとにインクリメントされるバージョンにより、メモリブロックが既に解放されているハンドル(ハンドルが長期間保持されすぎていることが原因)を検出できます。利点
欠点