У меня есть кэш изображений в моем приложении, который реализуется с помощью SoftReferences. Dalvik запускает приложения с относительно небольшой кучей, а затем увеличивает его в случае спроса. Но я хотел бы, чтобы размер кучи был больше с самого начала. Это связано с тем, что, когда у меня уже есть некоторые изображения в кеше, и начинается действие (например) или другое пиковое потребление памяти, мой кеш очищается, чтобы позволить памяти для этого пикового спроса. В результате, после того, как пик пропал, у меня все еще есть 2-3 МБ свободного места, но мой кеш пуст!
Решение, которое я вижу для этой проблемы, заключается в предопределении большей кучи forehand, поэтому даже при пиковом потреблении в 2-3 МБ у нее все еще есть некоторое пространство пространства, поэтому мои SoftReferences не очищаются.
Я обнаружил, что VMRuntime.getRuntime().setMinimumHeapSize(BIGGER_SIZE)
будет полезен. В частности, Google использует это в своих приложениях, как упоминалось здесь. Тем не менее, VMRuntime класс отмечен устаревшим и считается удаленным из открытого API в будущей версии. Поэтому setMinimumHeapSize
не является постоянным решением.
Как я заставляю Dalvik выращивать кучу при запуске?
В настоящее время я использую очень прямолинейный и дрянной метод, просто выделив большой массив и выпустив его. Это заставляет Далвик вырастить кучу, как я хочу. Тем не менее, я уверен, что должен быть более элегантный способ сделать это. Не могли бы вы сказать мне это, пожалуйста?