問題タブ [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 投票する
2 に答える
2209 参照

c# - Unity のオブジェクト プールからゲーム オブジェクトを取得する際の問題

オブジェクト プール スクリプトを UnityScript から C# に変換する際に問題がありましたが、ここで多くの助けを得ることができました。プールから実際にゲーム オブジェクトを取得しようとすると、問題が発生します。私は 3 つのスクリプトをすべて相互にやり取りしているので、どこが間違っているのかよくわかりません。オブジェクト プールの 2 つのスクリプトを次に示します。これらはすべて四角になっており、エラーは発生していません。

と:

元の UnityScript は、次のステートメントでプールからオブジェクトを取得すると言っていました。

これは、プールから弾丸プレハブを発射しようとしている私の射撃スクリプトでそれをやろうとした方法です:

撮影スクリプトで 2 つのエラーが表示されます。

1. タイプまたはネームスペース名「poolName」が見つかりませんでした。using ディレクティブまたはアセンブリ参照がありませんか?

行の場合:

2. 保護レベルが原因で「PoolObject.Activate()」にアクセスできません

行の場合:

UnityScript を間違って翻訳したのでしょうか、それとも他に何か抜けているのでしょうか? どんな入力でも大歓迎です

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

scala - アクター プロバイダーを使用した 1 回限りのオブジェクト プーリング

初期化コストとメモリ フットプリントが大きいオブジェクトがあります。初期化時間は人が認識できますが、作成頻度は低くなります。

私の解決策は、事前に作成された単一のオブジェクトを持つ Provider アクターを作成し、要求に応じて即座に提供することです。その後、プロバイダーは次のオブジェクトの作成に進みます。

そして消費者:

これはよくあるパターンですか?コードは奇抜に感じます。これを行う明確なクリーンな方法はありますか?

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

java - プール、Java から突然閉じられたソケットを排除します。

オブジェクト プールの Java 実装があり、オブジェクトが TCP ソケットに正常に接続されているとします。

プール レベル (ConnectionFactory) で「クリーンアップ」スレッドを保持し、プールが M 分間アイドル状態になっているかどうかを N 分ごとにチェックします (つまり、最後のアクセスは M 分前で、ここでは M>N)。

その場合は、コア数のソケットだけがプールに残るまで、すべての追加ソケットを閉じます。

ここで、突然閉じられたソケットも追跡して除去する必要があります。動作しているすべてのソケットを閉じて、突然閉じたソケット (反対側で閉じた) を持つプールになってしまう可能性があるため、これは必須のようです。

間違いなく、接続ファクトリ レベルではなく、ソケット レベルを調べる必要があります。

「Java で突然閉じられたソケットのトレース」、「接続プールのクリーニング」について調査しましたが、(各ソケットごとに) ACK または KeepAliveChecks を送信しない限り、Java ソケット API には何もありません。つまり、定期的にすべてのソケットでこれを実行する必要があります。

最良の方法は何ですか (つまり、他に方法はありますか) 良い人 (適切に接続されたソケット) をプールに保持することになりますか?

プールで突然閉じられたソケットをクリーンアップする方法は?

0 投票する
5 に答える
874 参照

java - static final String = "something" -- static は意味がありますか?

そのような宣言がJavaで何らかの本当の意味を持っているかどうか疑問に思っていました。私はコード内で何千回もそれを見つけましたが、Stringオブジェクトを宣言する回数が重要ではないことを学んだ文字列を勉強して遊んでいます:あなたのクラスがこの文字列を宣言する前に、これはプールされて再利用されます(明示的なコンストラクター呼び出しなしで作成された文字列について話します)

実際、このコードはtrue比較を呼び出すときに出力されるため、2 つの変数は同じオブジェクトを参照しています。final変数は再定義できないと言いましたが、この場合、その言葉staticまったく役に立ちません。私は要点を逃していますか?

さらにいくつかのこと:

1 - コンストラクターを明示的に呼び出してStringも文字列がプールされないのはなぜですか? new String("hello")printを使用した上記の同じコードfalse

2 - プーリング動作は文字列に予約されていますか? 他にもいくつかの不変オブジェクト (BigInteger など) がありますが、これらはプールされていないと思います...なぜですか?

ありがとう、カルロ

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

c# - オブジェクト プーリング ブレット スポーン

使用している銃用に単純なオブジェクト プールを配置しています。ただし、オブジェクトが非アクティブに設定され、再び自由に使用できるようになった後、使用されると元の方向に飛び出します。私はそのようなタスクにプーリングを使用することに慣れていないので、なぜそれが起こっているのか正確にはわかりません。

Bullet Spawn は、銃に取り付けられた空のゲーム オブジェクトです。また、弾丸はプレハブのスクリプトを介して非アクティブに設定され、2 秒後に非アクティブに設定されます。

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

c# - オブジェクトをプールに返す

無限ロードゲームを作っています。道路と敵のオブジェクトにオブジェクト プーリングを使用しています。道路はうまく機能していますが、敵オブジェクトに問題があります。プールから敵を追加できますが、敵オブジェクトをプールに戻すことはできません。 ログ ゲーム

My EnemyPoolScript