У меня есть приложение, где профиль памяти выглядит примерно так:Стоит ли смягчать последствия сбора мусора?
Jaggy http://kupio.com/image-dump/spikeymem.png
Медленные вверх ползти использование памяти вызван выделением участков и множество маленьких, простых, переходных объектов. В ситуациях с низкой памятью (это мобильное приложение) накладные расходы GC заметны по сравнению с менее ограничительными объемами памяти.
Поскольку мы знаем, из-за природы приложения, что эти всплески будут только продолжаться, я рассматривал какой-то пул многообразных переходных объектов (Awesome name). Эти объекты будут жить в течение всего жизненного цикла приложения и будут использоваться везде, где это возможно (где время жизни объекта невелико и очень предсказуемо).
Надеюсь, это уменьшило бы воздействие GC, уменьшив количество собранных объектов и повысив производительность.
Очевидно, что это также будет иметь свои собственные пределы производительности, поскольку «распределение» было бы более дорогостоящим, и на нем сохранялись бы накладные расходы.
Поскольку это было бы довольно крупным и навязчивым изменением в большом количестве кода, мне было интересно, если кто-то попробовал что-то подобное, и если бы это было выгодно, или были ли какие-либо другие известные способы смягчения GC такого рода ситуации. Также приветствуются идеи для эффективных способов управления кешем повторно используемых объектов.
«большой кеш многообразных скрытых объектов» == бассейн. –
pool == «Не так весело говорить»: P – izb
Вы знаете, что у вас паузы? –