問題タブ [boost-pool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost::pool 実メモリ割り当て
boost::pool
のメモリ プールを使用しようとしています#include "boost/pool/pool.hpp"
。
どのくらいのメモリが割り当てられているかを確認したいので、( manページから)を与えるboost::pool
コマンドを実行しますsystem("ps aux | grep myProgramExe | grep -v grep | awk '{print $5}'");
ps
VSZ - virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change. (alias vsize).
私は何か奇妙なことをしています:
コード (コードは 4 つのスペースでインデントされ、さらにリストに埋め込まれているため、さらに 4 つインデントされます)
/li>
出力は次のとおりです。
これは奇妙
です。私は 4 バイトだけを割り当てたいと思っていました (これnext allocation
は 1 つのインスタンスのみである必要があります)。
b. ブロックが終了して死んでいる場合、メモリは解放されていませんpool
。
ここで、サイズ 128 のインスタンスを割り当てたいと考えています。次の割り当てでは、次のように 1024 を割り当てたいと考えています。
/li>
出力:
次の理由により、これは問題ありません。
を。バイトを割り当てたかったのです128 * 1024 = 131072
が、バイトを取得しまし19040 - 18908 = 132KB = 135168
た。135168 - 131072 = 4096
バイト(それは単なるプールのオーバーヘッドだと思います)。
b. ブロックが終了すると、メモリが解放されました。
デストラクタ
/li>
出力:
これは奇妙です
、A。何らかの理由で、サイズは既に割り当てられています (.b を呼び出す前に
.b. でサイズが解放されていませpool.malloc()
ん。delete
これは説明可能ですか?プログラムが使用するメモリを確認する
代わりに、別のツールを使用する必要がありますか?ps
c++ - boost pool_allocator メモリ プールの動作の明確化
以下のブーストドキュメント:
ノート
singleton_pool
このアロケータによって使用される基になるものは、決して解放されないプール インスタンスを構築します。これは、アロケータによって割り当てられたメモリが の完了後も引き続き使用できることをmain()
意味しますが、一部のメモリ チェック プログラムがリークについて警告する可能性があることを意味します。
コードを確認したので混乱してsingleton_pool
いますが、現在のプロセスのヒープでのみ作成されているようです。つまり、プロセスが OS によって強制終了された場合、そのようなプールはとにかく解放されますか? 次に、上記のメモは、一部のデーモン スレッドが継続し、そのようなプールが main() の後も引き続き使用可能であるかどうかを意味するだけですか? それとも、プロセス全体が強制終了された後でもプールが解放されないということですか?
また、私には両方とも同じメカニズムを使用してメモリを割り当てるように見えpool_allocator
ますfast_pool_allocator
。つまり、そのようなsingleton_pool
シングルトンからです。ただし、この注記は には指定されていませんfast_pool_allocator
。上記のようなメモでは、どちらも同じように動作すると思います。私は正しいですか?
助けてください。ありがとう。
c++ - マルチスレッド アプリケーション用のプール ベースのメモリ割り当て
カスタム プール アロケーターで利用できる改善されたパフォーマンスは何ですか? (例: プールへのマルチスレッド アクセスに関して)
または、次のように言いましょう: この質問に対する最新の回答はありますか? マルチスレッドはメモリ割り当てを高速化できますか? この質問は5年以上前に尋ねられました。したがって、更新された回答が役立つと思います。