問題タブ [object-pooling]

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 に答える
396 参照

performance - ユニバーサル オブジェクト プール

オブジェクト プーリングを使用する利点がわかりました。また、それを Vector と組み合わせたいと考えています。しかし、ベクトルについて読んでみると、それらはコンパイル時にしか定義できないことがわかりました。つまり、プールされたクラスごとに個別のプーラー クラスが必要です。一方で、どのオブジェクト プーラーが呼び出されるか正確にわからないように、セットのランダムなクラス インスタンス (すべて特定のクラスを拡張する) を実行時にプールから取得したいと考えています。そして、プーラー クラスのコード シーケンスを増やさないようにするために、すべてのプールを UniversalPooler クラスに結合して、var foo:SomeClass=UniversalPool.getFromPool(SomeClass);. 問題は、可能であればベクトルを使用し、おそらくランダムなサブクラス選択を使用して、このようなユニバーサル プーラーのパフォーマンスを効果的に実装するにはどうすればよいかということです。

0 投票する
3 に答える
2845 参照

java - Java で有効期限のあるオブジェクト プールのサード パーティ ライブラリ

私は Web サービス サーバーを使用しており、内部接続を持つオブジェクトがあります。
この接続の初期化には非常に時間がかかるため、オブジェクト プールを使用してさまざまな要求間で接続を再利用することを考えました。

オブジェクトは各ユーザーに接続されているため、ユーザー名をキーとして使用し、接続を値として使用することを好みます。しかし、私は接続を永遠に開いておきたくありません。ユーザーがリクエストを開始しない場合、しばらくしてから破棄する必要があります。

Apache オブジェクト プールを使用することを考えましたが、そこに有効期限が表示されませんでした (間違っていたら訂正してください)。

ehcache は、エビクションと有効期限に関する通知を提供しますが、キャッシュされたオブジェクトが再び触れられた場合にのみ、タイムアウトが終了した後にトリガーされません。

誰かが私のためにこの仕事をすることができるライブラリを知っていますか?

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

hbase - 再利用 HBase クライアントに入れますか?

HBase に新しい行を配置するときは、新しいインスタンスを作成し、インスタンスを作成するデータを追加するためにPut呼び出す必要があります。多数のプット操作がある場合、多数のandが作成されます。GC を頻繁にトリガーします。add(byte [] family, byte [] qualifier, long ts, byte [] value)KeyValuePutKeyValue

と を再利用する方法はありPutますKeyValueか? その場合、すぐに GC されるメモリを割り当てる代わりに、ObjectPool を使用してメモリ使用量を安定させることができます。

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

c++ - オブジェクト プールの作成

タイプ X オブジェクトのベクトルを使用してオブジェクト bool を作成したいと思います。ベクトルを作成するとき:

最小限の作業で済ませたい。デフォルトのコンストラクターだけが呼び出されますか (私のデフォルトのコンストラクターは X では空です)?

プログラムの後半で、オブジェクト プールを使用してオブジェクトを「作成」するにはどうすればよいですか? それは次のようなものでしょうか:

get_next_object_in_pool()ベクトル内の次の空きインデックスへのインデックスを保持する場所はどこですか?

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

c++ - オブジェクト プール - オブジェクトを後で作成しても機能しない

私の目的は、事前に準備された多くのベクトルを作成することです (後で 2 つのデータ メンバーはありませんが、連続メモリにできるだけ多く割り当てたいと思います)。これらの準備された「シェル」の 1 つをすばやく使用して、オブジェクトをより迅速にインスタンス化できます。最も重要なことは、これらのオブジェクトのすべてが同じ連続したメモリ アドレスに配置されることです。

上記を達成するために、私はこれを行いました:

しかし、オブジェクトに変数名を付けたままコンパイルすることはできません....ここにMyClassがあります:

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

c++ - カスタムメモリヒープのboost::object_pool

オブジェクト プールを作成したいのですが、メモリ ヒープの特定のセグメントだけにメモリを割り当てたいです。boost を使用してこれを行う方法はありますか?

0 投票する
2 に答える
52 参照

java - オブジェクトをプールに戻すことは必須ですか?

GenericObjectPoolクラスのオブジェクトのプールを作成するためにApache を使用しています。

私はウェブアプリケーションを持っています。リクエストが処理されたら、問題なくオブジェクトをプールに戻します。finallyコードでは、オブジェクトをブロック内のプールに戻しています。

私の質問は、私のJUnitテストケースでも、プールからオブジェクトを取得して使用していることです。テスト ケースの実行が完了した後、オブジェクトをプールに戻す必要はありますか?

上記のfinallyブロックで述べたように、テストケースでオブジェクトをクライアントに戻す必要は本当にありますか?

0 投票する
3 に答える
386 参照

java - Generic ObjectPool - ジェネリック クラスを返す方法は?

プールもオブジェクトもソースを変更せずに任意のオブジェクトで使用できる ObjectPool を開発しようとしていますが、get()関数を記述する方法が見つかりません(「メインコード」でオブジェクトを取得するプールから) タイプの不一致があるため (オブジェクトからテストオブジェクトに変換できません)

これまでの私のコードは次のとおりです。

オブジェクトプール:

オブジェクト(ArrayList) にはプール内のすべてのオブジェクトがあり、availableObjectsは使用可能な すべてのオブジェクトのリストが含まれています。私は基本的に、最初に利用可能なオブジェクトを返し、それを利用不可としてマークしています。

メインコード:


get() -Method をより一般的/具体的にして、別のクラスを使用するたびにプールを調整したり、メインコードを解析したりせずに機能するよう にするにはどうすればよいですか?


アップデート:

その Pool のより一般的なバージョンでは、get()メソッドはどのように正しく見えるでしょうか?
(その他のフィードバックは大歓迎です!)
更新:以下の MainCode の動作 (修正済み) バージョン

更新 2:
このようには機能しないことに気付きました。プールに新しいオブジェクトを作成する必要があります。これは、すべての種類のオブジェクトにプールを適応させずに行うことはほとんど不可能のようです。
プール内のすべてのオブジェクト間の参照を何らかの方法で削除できますか? (baseObject を使用してすべてのオブジェクトを初期化するため、実際には 1 つのオブジェクトへの参照が 5 つしかありません)
または、それを管理するためのより良い方法はありますか? (ユーザーにコード内のオブジェクトの作成を強制することなく)

ここまでの完全なコード:

オブジェクト プール

メインコード (オリジナル)

メインコード (固定)

TestObject には、テスト目的で単一のintのみが含まれます

エラー

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

java - プールから実行可能なクラスへのオブジェクトの受け渡し

ブロッキングキューにオブジェクトのプールがあります。ここで、キューからスレッドにオブジェクトを割り当て、それを run メソッド内で使用したいと考えています。

それを行う最良の方法は何ですか?

プールを構築するために使用しているサンプルコードは次のとおりです。

これは、オブジェクト プールの構築に使用されます。

これが私がスレッドを作成したい方法です。

}

}

今、スレッドを介してプール内のオブジェクトにアクセスしたいと考えています。メイン プログラムでは、MrRunnable オブジェクトの作成中にオブジェクトをコンシューマ プールから実行可能クラスに渡す必要がありますか、それとも他の方法がありますか?