2013-06-17 5 views
0

je le code qui définit une structure d'entité, par exemple:classes de cas de consommation de mémoire

case class EntityDefinition(id: UUID, 
          name: String, 
          propertyDefinitions: Map[String, PropertyDefinition] = Map.empty[String, PropertyDefinition]) 

Et j'ai le code suivant pour l'entité:

case class Entity(entityDefinition: EntityDefinition, 
        id: UUID, key: String, 
        properties: Map[String, Property[Any]]) 

Est-ce que chaque entité prendra la mémoire supplémentaire pour stocker son instance entityDefinition? J'ai l'intention de garder le nombre d'EntityDefinitions très bas, mais chacun occupera une taille significative.

Donc la question est de savoir si garder cette structure pour une entité, ou d'implémenter une sorte de référence qui obtiendrait la définition d'entité du cache à la demande?

+2

Pourquoi pensez-vous que les classes de cas diffèrent des classes habituelles dans cet aspect? Il gardera une référence. Tant qu'il y a plus de 0 références réelles à l'objet, l'objet lui-même sera conservé en mémoire. –

+0

Ce qui me préoccupait - que ce soit pour générer une classe de cas immobile Scala copie en quelque sorte l'objet :-) – abatyuk

Répondre

4

Si vous partagez les définitions d'entité, il vous suffit de calculer une référence d'objet par Entity pour eux. La taille d'une référence d'objet est specified by the JVM

Questions connexes