問題タブ [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.
c# - 異なる派生クラスを含む 1 つのオブジェクト プール
短縮版:
同じ基本クラスから派生したさまざまな型のクラスを格納できるオブジェクト プールを作成するにはどうすればよいでしょうか。
想定される使用例については、以下を参照してください。
長いバージョン:
私はBaseComponent多くの派生クラスをChild1Component持つクラスを持っていChild2Componentます。
これらのコンポーネントのコレクションを表す別のオブジェクトもあり、そのプロパティは特定の値に設定されています。EntityTemplateエンティティは一連のコンポーネントとその値によって定義されるため、これを と呼びます。
エンティティ コンポーネントに基づいてエンティティを作成したいと考えています。現在これを行うには、適切な を取得し、EntityTemplateさまざまなコンポーネントをループして、Clone各子クラスで定義したメソッドを呼び出します。そこにもCopyメソッドが定義されていますが、これは役に立つかもしれません。
エンティティの有効期限が切れたら、そのコンポーネントをオブジェクト プールに追加します。次にエンティティを作成する必要があるときは、エンティティ テンプレートを取得し、コンポーネントごとにプールから同じタイプの 1 つを取得します。EntityTemplate以下のように、 のプロパティと同じプロパティを設定します。
flash - オブジェクトプールが機能しない
オブジェクトプールの設定に問題があります。プーリングロジックを処理するために「BallPoll」カスタムクラスを作成しました。最初にfillPool()を呼び出して、20個のBallオブジェクトを配列に追加します。次に、ボールを作成するときにドキュメントクラスで、プール配列を確認します。それは機能しておらず、理由はわかりません。
------ドキュメントクラス---------
-----------BallPoolクラス---------
java - 独自の Java オブジェクト プーリング ライブラリはありますか?
ソケット接続 (TCP) のプールを作成する必要があります。コモンズ プールを使用する予定ですが、市場に出回っている独自のオブジェクト プール ライブラリについて知りたいです。
バルガヴァありがとう
c# - ジェネリック パラメーターを指定し、そのパラメーターを使用するジェネリック オブジェクトを取得するジェネリック クラス プールの作成
ゴール
ジェネリック クラスがGenericClass<T>あり、インスタンスをプールしたいと考えています。
構文を取得できるかどうかに興味があります。
(私のジェネリックスの理解では、構文が存在しない/機能しないとは言えませんが、愚かなことはできませんが、他の人の考えに興味があります)。
私の働きを見せる
私は型を理解しているので少し疑わしくGenericClass<string>、GenericClass<int>型システムの観点からは実際には関係ありません。
今、私は近づくことができることに気づきました。
そして、GenericPoolちょうどストアをDictionary<Type, ObjectPool<object>>どこかに持っています。
それを避けることができるかどうか、私は興味があります。呼び出し元としてジェネリック型パラメーターのみを変更するたびに、ジェネリック型を指定する必要はありません。GenericObjectPool<T>また、すべてのオブジェクトがセット ジェネリック型 ( )であることを強制 (コンパイル時) できるようにしたいと考えていますT<>。
問題は、ジェネリック型パラメーターをジェネリックとして扱うことができないことに起因すると思います。私がそれを行うことができれば(私はすでにできますか??)、おそらく以下のようなものがうまくいくかもしれません:
質問
必要な構文 (上部) を取得できますか? そうでない場合、どれくらい近づくことができますか?
android - 大きなサイズのバイト配列を宣言する代わりに、オブジェクトプーリングの概念を使用できますか?
大きなサイズのバイト配列を20MBとして宣言する代わりに、オブジェクトプーリングの概念を使用できるかどうかという質問があります。はいの場合、どのように?byte[] fileData = new byte[2097152];実際、同じJavaファイルを20〜24回連続してヒットしようとした後、アプリでOutOfMemoryExceptionを頻繁に返すビデオファイルからその量のデータを読み取らなければならないというステートメントがあります。これはエラーではないことを意味します。この場合、ヒープメモリがいっぱいになり、GCは指定された期間内に同じものをクリアできません。そのため、OutOfMemory例外が返されます。それで、ここで、より高いメモリ使用率のために、JAVAのObjectPoolingの概念を使用できますか?
前もって感謝します。
java - Androidでのオブジェクトプーリングの概念の実装
私はAndroidを初めて使用します。アプリでオブジェクトプーリングを使用する必要がありますが、それについて十分に理解していません。どのように実装できますか?
java - 共有オブジェクトのプールにアクセスするためのJettyの構成
ステートレスな方法でテキストを処理するオブジェクトがあります。基本的にいくつかの入力を受け取り、結果を返します。ただし、オブジェクトの作成には、大量のデータをメモリにロードする必要があるため、コストがかかります。Jettyを使用してその周りにWebサービスを構築し、外部ソースからのテキストを解析できるようにしたいと思います。Jettyは、そのようなオブジェクトのプールをメモリに保持し、それらを使用してHTTPリクエストを処理する必要があります(一度に1つのオブジェクトのみが1つのHTTPスレッドによって使用されていることを確認してください)。それを行うようにサーバーを構成するにはどうすればよいですか?
c++ - std::vectorからのpop-push要素と再利用要素
データ構造に問題があるc++03のプロジェクトがあります。継続的にpop_front-push_backする必要がある場合でも、リストの代わりにベクトルを使用します。しかし、今のところ、あまりにも多くのコードを書き直す必要があるので、今のところは問題ありません。
私のアプローチは、tuoが最後のframe_sizeポイントのバッファを常に更新することです。だから、各フレームは前に飛び出して後ろに押す必要があります。(多分このアプローチの名前はありますか?)
だから私はこのコードを使用します:
オブジェクトプール用のすぐに使用できるコードがあるので、これは優れた最適化ではありませんが、フロントをプールに格納できるため、ポイントの割り当て時間を取得できると思いました。
わかりました、これはそれほど有用ではなく、おそらくそれは意味がありませんが、私は教育的な好奇心だけに尋ねます:どうすればそれを行うことができますか?
ベクトルの消去された要素のメモリを保存して再利用するにはどうすればよいですか?この質問は意味がありますか?そうでない場合、なぜですか?
..消去は消去されたベクトルを返さないため、次を返します。
関数呼び出しによって消去された最後の要素に続く要素の新しい場所を指すランダムアクセスイテレータ。これは、操作がシーケンスの最後の要素を消去した場合のベクトルの終わりです。
java - カウチデータベースの接続プール
私は1つのcouchdbデータベースを持っており、並行してクエリを実行しています。ここで、接続プールを作成したいと思います。設計にボトルネックがあることを発見したためです。
Web で接続プールの実装を検索しましたが、couchdb 用の適切な Java 接続プールの実装を見つけることができませんでした。ほとんどのフレームワークはリレーショナル データベースをサポートしています。誰かが私を助けてくれれば幸いです。
java - newFixedThreadPool がオブジェクト プールで期待どおりに機能しない
リソースをプールする方法を理解するのに苦労しており、スレッドに問題があるのではないかと疑い始めています (100% ではありませんが、実験しています)。私がやろうとしていることの要点は、サーバーへのチャネルのプールを作成し、スレッドがそれらを使用しているかどうかを確認することです。アップロードしているアイテムと同じ数のチャネルを作成することに成功し(つまり、プールせず、各スレッドで新しいチャネルを作成するだけです)、チャネルを1つだけ作成することに成功しました(つまり、プールしたり、新しいチャネルを作成したりしません)必要に応じてチャネル)。
スレッドがプールと対話する方法が問題なのではnewCachedThreadPoolないかと考えていたので、作業がある限りスレッドが死なないように作成しようとしましたが、そうすると、使用されているチャネルが閉じられているというエラーが表示されます。私のプールにはdestroyObjectメソッドがありますが、私はそれを呼び出さないので、なぜそれがトリガーされるのか理解できません (コメントアウトすると機能しますが、1 つのチャネルしか作成せず、アップロードはスレッド化されていない場合と比較して約 300 操作/秒と非常に遅くなります)プール私は30k /秒を取得します)。終了していると思われますが、これを確認する方法はありますか?終了している場合に使用できる代替手段はありますか?
これがコードです(rabbitmqのものはすべて無視してください。結果を監視できるようにするためです):
ps 私は基本的にいくつかの質問をし、ドキュメントを読み、これを理解しようとしましたが、途中で完全に間違った方向に進んでいる可能性があるため、問題やヒントがあれば送ってください。
プロットが厚くなります:
メインメソッドの for ループ (作業をスレッドに送信する場所) に次を追加しました。
プールには 25 のスレッド (20 と言いましたが) と 20 のアイテムが表示されます。しかし、rabbitmq の UI を見ると、チャネルが 1 つしかない 1 つの接続が表示されます。チャネルを作成してランナブルに送信すると、多くのチャネルが作成されます (ただし、チャネルは閉じられません)。何が起こっているのか、なぜ結果が期待どおりにならないのか理解できません。