Sobre el uso de Singleton basado en Enum para cachear objetos grandes (Java)

¿Hay alguna forma mejor de almacenar en caché algunos objetos muy grandes, que solo se pueden crear una vez y, por lo tanto, se deben almacenar en caché? Actualmente, tengo los siguientes:

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);
    }
}  

Hay varias clases que pueden usar LargeObjects, por lo que decidí usar un singleton para el caché, en lugar de pasar LargeObjects a todas las clases que lo usan.

Además, el mapa no contiene muchas claves (una o dos, pero la clave puede variar en diferentes ejecuciones del programa) así que, ¿hay otro mapa más eficiente para usar en este caso?

Respuestas a la pregunta(2)

Su respuesta a la pregunta