Я пытаюсь написать кэш изображений.Я использую WeakHashMap, чтобы удерживать загруженные изображения и показывать их в списке ImageView.Однако через некоторое время я сталкиваюсь с:
02-17 15:13:00.416: D/dalvikvm(11766): GC_FOR_MALLOC freed 0K, 69% free 3447K/10823K, external 21870K/22699K, paused 16ms
02-17 15:13:00.455: D/dalvikvm(11766): GC_EXTERNAL_ALLOC freed <1K, 69% free 3447K/10823K, external 21870K/22699K, paused 25ms
02-17 15:13:00.463: E/dalvikvm-heap(11766): 116160-byte external allocation too large for this process.
02-17 15:13:00.490: E/GraphicsJNI(11766): VM won't let us allocate 116160 bytes
После чего я получаю OutOfMemoryError.
Очевидно, что у меня заканчивается "внешняя память", что бы это ни было.Доступно много кучи, но это не имеет значения.Похоже, что GC не может очистить эту «внешнюю память», хотя единственные ссылки, которые у меня есть, - это слабый хэш и imageViews в списке (который должен быть только одним экземпляром, повторно использованным) ...
Может кто-нибудь помочь мне пролить свет на этот вопрос?Что это за внешняя память, из которой у меня заканчивается?Почему GC не очищает старые изображения?
Редактировать: я с тех пор узнал, что вызвало освобождение моей памяти: WeakHashmap выпускает записи, когда на KEYS больше нет ссылок, а не когдаЦЕННОСТИ не являются ссылками.Мой главный вопрос все еще остается: что это за внешняя память?