Android: как увеличить размер кучи во время выполнения?

В моем приложении есть кеш изображений, который реализован с помощью SoftReferences. Dalvik запускает приложения с относительно небольшой кучей, а затем увеличивает ее в случае необходимости. Но я бы с самого начала хотел, чтобы размер моей кучи был больше. Это связано с тем, что, когда у меня уже есть некоторые изображения в кеше и начинается действие (например) или возникает другая пиковая потребность в памяти, мой кеш очищается, чтобы позволить памяти для этого пикового спроса. В результате после того, как пик прошел, у меня осталось 2-3 МБ свободного места, но мой кеш пуст!

Решение, которое я вижу для этой проблемы, - это предварительное выделение большей кучи вперед, поэтому даже при пиковом потреблении 2-3 МБ в ней все еще есть место, поэтому мои SoftReferences не очищаются.

Я обнаружил, что VMRuntime.getRuntime (). SetMinimumHeapSize (BIGGER_SIZE) будет полезным. В частности, Google использует это в своих приложениях, как упоминалось здесь . Однако класс VMRuntime помечен как устаревший и будет удален из общедоступного API в будущем выпуске. Итак, setMinimumHeapSize не является постоянным решением.

Как я могу заставить Dalvik увеличивать мою кучу при запуске?

В настоящее время я использую действительно простой и дрянной метод, просто выделяя большой массив и выпуская его. Это заставляет Далвика наращивать кучу как я хочу. Тем не менее, я' Я уверен, что должен быть более элегантный способ сделать это. Не могли бы вы мне это сказать?

16
задан Community 23 May 2017 в 12:11
поделиться