問題タブ [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.
java - Java または JavaScript でイベント リスナーのオブジェクト プールを作成する方法
オブジェクト プーリングがゲームのガベージ コレクションをどのように削減するかについての記事を読んでいます。特に、キー イベントが常に作成および破棄されるイベント リスナーの場合です。彼らは、オブジェクト プーリングによってメモリの問題がどのように減少するかについて言及していますが、実際にそれを行う方法についてはコードのどこにも記述していません。
JavaScript または Java でイベントのプールをオブジェクト化するにはどうすればよいですか?
java - AndroidでImageViewを処理するオブジェクトプール?
Android アプリで、9x9 のフィールドを表示するビューを作成しました (簡略化されたスクリーンショットを参照)。
ビュー内の各フィールドは、ImageView (四角形ではなく画像を表示) で表されます。一部の ImageView は、それらをnull
に設定し、可視性を に設定することによって削除されView.GONE
、新しい要素がフィールドに追加されるたびに新しい ImageView が作成されます。これは、短時間で多数の ImageView を作成することを意味します。要点は、ゲームは私の HTC One でうまく動作しますが、しばらくすると (ガベージ コレクションが実行されているときだと思います) 遅れが生じ、その後遅れがなくなり、再びうまく動作するようになります。
これにより、 を使用してオブジェクトを管理するというアイデアがPool
生まれます。たとえば、「削除された ImageViews」をリサイクルし、位置を設定して画像ソースを変更して再利用します。プレーンな Android 向けに開発していますが、LibGDX フレームワークを使用することを考えています。
私の質問は:プレーンな Java/Android でプールを実装する方法について何か提案はありますか? この投稿は興味深いもので、Apache Commons ObjectPool を使用できると思いました。Android または LibGDX でより良い方法はありますか?
注: ImageView は、各ラウンドで同じ位置にあるわけではありません。Tween Engine を使用してそれらを移動します。ただし、画像ビューの数は一種の一定です。ゲームのある時点で、81 個の ImageView (9*9) と、特別なイベントをアニメーション化するためのいくつかの ImageView (おそらく +10) があることを意味します。
アドバイス/推奨事項をいただければ幸いです。
よろしくお願いします、
ジミー
java - これがオブジェクト プールを使用できる唯一の方法ですか?
取り組んでいる Android ゲームに Apache 共通プールを使用することを検討してきましたが、ジェネリック クラスではオブジェクト プーリングが機能しないようです。
したがって、プーリングには2つのオプションが残っていると思います。
- 私はすべてのゲーム オブジェクトをジェネリックにしますが、そのセットアップを変更して、オブジェクトが異なる開始プロパティ (質量、サイズ、状態、3D ボディなど) を持つようにします。
また
2. サブタイプごとに複数の小さなプールをセットアップします。
この仮定は正しいですか?
java - オブジェクト プーリング: デスクトップでは悪、モバイル デバイスでは推奨。これはどうしてですか?
私は、通常の Java オブジェクト (接続などのオブジェクトではない) をプールしても改善されず、実際にはパフォーマンスが低下する可能性があるというさまざまなブログや推奨事項を読んでいました。これはアンチパターンです。ただし、これは Android プラットフォームについて耳にすることはほとんどありません。たとえば、多くのゲーム ライブラリでは、既存のオブジェクトを再利用するためのクラスが提供されています。オブジェクト プーリングによってガベージ コレクションのサイクル数が減り、パフォーマンスが向上することを知りました。
デスクトップ コンピューターはモバイル デバイスとどのように異なり、別の開発パターンが推奨されるのでしょうか? 考えられる答えは次のとおりです。
- オブジェクト プーリングにより、デスクトップ アプリケーションの実行も向上します
- オブジェクト プーリングは実際には Android アプリケーションでは役に立たない
- Java SE と Android JVM には重要な違いがいくつかあります。
- オブジェクト プーリングをデスクトップに使用することは、モバイル アプリケーションにもたらすメリットよりも少ないため、デスクトップにはお勧めしません (ただし、場合によっては良いかもしれません)。
java - 終了時にオブジェクトを保存し、開始時にリロードする機能を持つオブジェクト プール?
Apache Commons は、まともなオブジェクト プールの実装のようです。または原因をサポートできるその他のフレームワーク
シャットダウン中にプールの状態を保存するにはどうすればよいですか。そのオブジェクトを外部形式のjson、xmlにシリアル化することができます..? 次回の起動時にリロードしますか?
c# - タスク並列ライブラリとオブジェクト プールの設計パターン
Task Parallel Library を使用しているようなシナリオがあり、作成されるオブジェクト (ここではタスク) の数を制限する必要があります。つまり、既存のタスクを再利用するということであり、オブジェクト プールのデザイン パターンを使用してこの機能を実装することを考えています。しかし、調査を行ったところ、「実行中または完了したタスクの再開はサポートされていない」ことがわかりました。だから私の質問は、タスクを再利用していなくても、ここでオブジェクト プール パターンを使用できるかということです。とにかく、作成するタスクの数を制限しているためです。アドバイスをお願いします。
c# - (Unity) オブジェクト プール スクリプトを UnityScript から C# に変換しようとすると、エラーが発生します。
優れたオブジェクト プーリング スクリプトを見つけましたが、それは UnityScript で作成されており、私のプロジェクトは C# で作成されています。変換しようとしましたが、よくわからないエラーが 1 つあります。これが私のスクリプトです:
エラーは次のとおりです。「タイプ 'UnityEngine.GameObject' を `PoolObject' に暗黙的に変換できません」
行の場合:
と
このスクリプトは PoolObject という別のスクリプトを参照していますが、エラーは発生しないため、これらのエラーに関連しているとは思いもしませんでした。これがそのスクリプトです:
ここで私が間違っていることを誰か教えてください。