А как насчёт WeakHashMap?