Android 2.1 SDK + ConcurrentHashMap $ ValueIterator против GC - PullRequest
1 голос
/ 05 августа 2011

Я пишу игру для платформы Android. У меня есть пули в ConcurrentHashMap и я проверяю их на столкновения. Все отлично работает, но GC работает каждые 3-5 секунд, при проверке с помощью Allocation Tracker есть много выделений (90% из них), каждое с размером выделения = 36 в java.util.concurrent.ConcurrentHashMap $ ValueIterator

Параллельность - это ключ, потому что многое может случиться с пулями, и обычное исключение из массива выдает параллельное исключение, поэтому я переключился на ConcurrentHashMap. Как я могу оптимизировать его для скорости и GC?

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

1 Ответ

0 голосов
/ 05 августа 2011

Я думаю, что вы можете вызывать эту итерацию слишком часто.values() вызов создает коллекцию и выдает new ValueIterator() каждый раз, когда вы запускаете цикл for.

Можете ли вы кэшировать эти значения, возможно, на более длительный период времени, вместо того, чтобы выполнять цикл слишком часто?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...