Il y a divers articles sur les interwebs qui tentent de l'estimation empirique de la surcharge d'un java.lang.Object
, en particulier de la JVM des implémentations. Par exemple, j'ai vu la taille de la charge d'un nu Object
estimé à 8 octets dans certains Jvm.
Ce que je voudrais savoir, c'est si typique de la JVM de la mise en œuvre de l' extends
relation introduit incrémental taille généraux à tous les niveaux de la hiérarchie de classe. En d'autres termes, supposons que vous avez une hiérarchie de classe avec des niveaux de N de sous-classes. Est la surcharge de la représentation en mémoire d'une instance de classe O(1) O(N)?
J'imagine que c'est O(1) car, bien que la taille de certains caché moelleux de choses que vous devez être un Java Object
(vtable, de la chaîne de classes) augmentera à mesure que la hiérarchie d'héritage grandit, ils poussent par la classe, et pas par exemple, et la JVM peut stocker constante de la taille des pointeurs vers ces entités dans une constante de la taille d'en-tête de chaque Object
.
Donc, en théorie, les frais généraux directement attaché à la représentation en mémoire de tout objet Java doit être O(1) pour l'héritage de la profondeur N. personne Ne sait si c'est vrai dans la pratique?