問題タブ [memory-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.
tomcat - Eden スペースはどこに設定しますか?
問題の概要:
PS Eden Spaceの近くに表示されるメモリ サイズは 639.5 MB ですが 、 JAVA_OPTS-Xms2558m -Xmx2558m
には(2.5G)が含まれています。
詳細 :
seten.sh ファイルを作成した後、次の行を追加します。
次に、アプリケーションサーバーのUIを監視して、このメモリの増加が何のためのものかを確認します
私は不思議に思っていました:PS Eden Spaceがすぐにメモリを消費するのに、なぜPS Old Genが安定したままアプリケーションを参照するのか. ただし、 PS Eden Space付近で表示されるメモリ サイズは 639.5 MB です。
PSエデンスペースを増やす方法は?Java8 を使用していることがわかっている場合、どのオプションを使用する必要がありますか?
私が設定したとき-Xms2558m
:私のアプリがgrailsアプリケーションであることはあまり知られていませんか(Spring Framework、Spring Securityなどを含む)
c++ - 汎用メモリ プール - 方法 - 設計上の問題
小さくて頻繁に使用されるオブジェクト用に独自のメモリ プールを作成しています。私は割り当てとd-割り当て自体に精通しています。
これが私のプールのレイアウトです
各クラスに独自のプールが必要です。いくつかのクラスがこのプールを使用する必要がある場合、
CreatePool()
size と no_of_objects で呼び出します- これらは、パラメータ化された
new
&delete
またはオーバーロード演算子を呼び出し、それらからAllocate
andDeAllocate
関数を呼び出します。 - 「DestroyPool()」を呼び出します
のような電話の方が心配ですDerived *derObj = new (poolObj)Derived();
。ここでユーザーは忘れる可能性がpoolObj
あり、そのオブジェクトは私のヒープにまったくありません。もちろん、これが機能するために、次のようなグローバル関数があります
だから私は具体的な質問をしたいと思います:
Derived *derObj = new Derived();
クライアントが呼び出した場合にプールからメモリを割り当てる機会があるように、プール クラスを再設計するにはどうすればよいですか 。それは可能ですか?type
オブジェクトを認識する方法はありますか? では、クライアント コードから削除することCreatePool
もDestroyPool
できますか? ただし、「タイプ」ごとにプールが 1 つしかないことに注意する必要があります。
テンプレート化されたコードも使用する準備ができていますが、何をテンプレート化すればよいかわかりません。提案してください。
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++ - メモリー・プールの初期ブロック・サイズ
C++ テンプレートを使用してメモリ プール クラスを実装していますが、ブロックの適切なサイズを知りたいと思っています。例えば:
上記の例では、ブロック サイズは実際には型T
と、作成される要素数の既定値によって異なります。これを行うためのベスト(または一般的な)プラクティスは何ですか? ここでブロックサイズのメモリアライメントを考慮する必要がありますか?