2011-08-05 6 views
1

私はアンドロイドプラットフォーム用のゲームを作成しています。私はConcurrentHashMapに弾丸をつけて、衝突をチェックしています。すべてがうまく動作しますが、GCは3〜5秒ごとに実行されます。割り当てトラッカーでチェックすると、割り当て量が多く(90%)、割り当てサイズ= 36のすべてがjava.util.concurrentHashMap $ ValueIterator

並行処理が重要なのは、多くのことが箇条書きに起こり、通常のarraylistが並行例外をスローするため、ConcurrentHashMapに切り替えたからです。どのように私は速度とGCのためにそれを最適化できますか?

for (IWeaponBullet xbullet : PlayerSystem.aEnemiesBulletsArray.values()) { 
    //checking 
} 

答えて

0

あなたはこの繰り返しをあまりにも頻繁に呼び出すかもしれないと思います。 values()呼び出しはコレクションを作成しており、このforループを開始するたびにnew ValueIterator()となります。

ループを頻繁に実行する代わりに、これらの値を長い時間キャッシュすることはできますか?

+0

私は恐れていません、私は別の要素との衝突のためにすべてのフレームをチェックインしています、1つのフレームでこのハッシュマップを変更することができる多くのオブジェクトがあります/ –

関連する問題