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