Я пишу игру для платформы Android. У меня есть пули в ConcurrentHashMap и я проверяю их на столкновения. Все отлично работает, но GC работает каждые 3-5 секунд, при проверке с помощью Allocation Tracker есть много выделений (90% из них), каждое с размером выделения = 36 в java.util.concurrent.ConcurrentHashMap $ ValueIterator
Параллельность - это ключ, потому что многое может случиться с пулями, и обычное исключение из массива выдает параллельное исключение, поэтому я переключился на ConcurrentHashMap. Как я могу оптимизировать его для скорости и GC?
for (IWeaponBullet xbullet : PlayerSystem.aEnemiesBulletsArray.values()) {
//checking
}