Есть ли лучший способ кэшировать некоторые очень большие объекты, которые могут быть созданы только один раз, и поэтому должны быть кэшированы? В настоящее время у меня есть следующее:
public enum LargeObjectCache {
INSTANCE;
private Map<String, LargeObject> map = new HashMap<...>();
public LargeObject get(String s) {
if (!map.containsKey(s)) {
map.put(s, new LargeObject(s));
}
return map.get(s);
}
}
Есть несколько классов, которые могут использовать LargeObjects, поэтому я решил использовать синглтон для кэша, вместо того, чтобы передавать LargeObjects каждому классу, который его использует.
Кроме того, карта не содержит много ключей (один или два, но ключ может отличаться в разных запусках программы), поэтому есть ли другая, более эффективная карта для использования в этом случае?