Have you tried android.util.LruCache (its a SDK11 class but it's also in the compatibility package as android.support.v4.util.LruCache). It does not implement java.util.Map
but works like a Map and you can define how much memory will it take and it will flush old (unused cached objects by itself).