問題タブ [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.

0 投票する
1 に答える
10623 参照

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などを含む)

0 投票する
0 に答える
359 参照

c++ - 汎用メモリ プール - 方法 - 設計上の問題

小さくて頻繁に使用されるオブジェクト用に独自のメモリ プールを作成しています。私は割り当てとd-割り当て自体に精通しています。

これが私のプールのレイアウトです

各クラスに独自のプールが必要です。いくつかのクラスがこのプールを使用する必要がある場合、

  1. CreatePool()size と no_of_objects で呼び出します
  2. これらは、パラメータ化されたnew&deleteまたはオーバーロード演算子を呼び出し、それらからAllocateandDeAllocate関数を呼び出します。
  3. 「DestroyPool()」を呼び出します

のような電話の方が心配ですDerived *derObj = new (poolObj)Derived();。ここでユーザーは忘れる可能性がpoolObjあり、そのオブジェクトは私のヒープにまったくありません。もちろん、これが機能するために、次のようなグローバル関数があります

だから私は具体的な質問をしたいと思います:

  1. Derived *derObj = new Derived();クライアントが呼び出した場合にプールからメモリを割り当てる機会があるように、プール クラスを再設計するにはどうすればよいですか 。それは可能ですか?

  2. typeオブジェクトを認識する方法はありますか? では、クライアント コードから削除することCreatePoolDestroyPoolできますか? ただし、「タイプ」ごとにプールが 1 つしかないことに注意する必要があります。

テンプレート化されたコードも使用する準備ができていますが、何をテンプレート化すればよいかわかりません。提案してください。

0 投票する
1 に答える
356 参照

c++ - boost::pool 実メモリ割り当て

boost::poolのメモリ プールを使用しようとしています#include "boost/pool/pool.hpp"
どのくらいのメモリが割り当てられているかを確認したいので、( manページから)を与えるboost::poolコマンドを実行しますsystem("ps aux | grep myProgramExe | grep -v grep | awk '{print $5}'");psVSZ - virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change. (alias vsize).

私は何か奇妙なことをしています:

  1. コード (コードは 4 つのスペースでインデントされ、さらにリストに埋め込まれているため、さらに 4 つインデントされます)

    /li>

出力は次のとおりです。

これは奇妙
です。私は 4 バイトだけを割り当てたいと思っていました (これnext allocationは 1 つのインスタンスのみである必要があります)。
b. ブロックが終了して死んでいる場合、メモリは解放されていませんpool

  1. ここで、サイズ 128 のインスタンスを割り当てたいと考えています。次の割り当てでは、次のように 1024 を割り当てたいと考えています。

    /li>

出力:

次の理由により、これは問題ありません。

を。バイトを割り当てたかったのです128 * 1024 = 131072が、バイトを取得しまし19040 - 18908 = 132KB = 135168た。135168 - 131072 = 4096バイト(それは単なるプールのオーバーヘッドだと思います)。
b. ブロックが終了すると、メモリが解放されました。

  1. デストラクタ

    /li>

出力:

これは奇妙です
、A。何らかの理由で、サイズは既に割り当てられています (.b を呼び出す前に .b. でサイズが解放されていませpool.malloc()ん。
delete

これは説明可能ですか?プログラムが使用するメモリを確認する
代わりに、別のツールを使用する必要がありますか?ps

0 投票する
1 に答える
543 参照

c++ - メモリー・プールの初期ブロック・サイズ

C++ テンプレートを使用してメモリ プール クラスを実装していますが、ブロックの適切なサイズを知りたいと思っています。例えば:

上記の例では、ブロック サイズは実際には型Tと、作成される要素数の既定値によって異なります。これを行うためのベスト(または一般的な)プラクティスは何ですか? ここでブロックサイズのメモリアライメントを考慮する必要がありますか?