¿Qué tan grande, en bytes, es una primitiva en caja como java.lang.Integer
o java.lang.Character
en Java?¿Cuál es el costo de almacenamiento de una primitiva en caja en Java?
Un int
tiene 4 bytes, un puntero típico también es de 4 bytes (si no está comprimido por la JVM). ¿El costo de un entero (sin almacenamiento en caché) es 4 bytes + 4 bytes = 8 bytes
? ¿Hay más campos ocultos dentro del objeto caja o sobrecarga incurrida en relación con los objetos (es decir, hay un costo general para los objetos que no conozco?).
No me interesan los problemas de almacenamiento en caché. Sé que los enteros dentro de un cierto rango están en caché en la JVM.
Se podría volver a formular la pregunta: ¿Cuál es el factor máximo que se multiplicará en la cantidad de memoria utilizada para los valores encuadrados frente a los valores primitivos?
EDIT: Entiendo que existen múltiples implementaciones de la JVM. ¿Cuál es el costo típico en una implementación típica de HotSpot de 32 bits?
Desde una cierta perspectiva, esta pregunta no tiene respuesta porque la tara en una primitiva en caja no se especifica en ninguna especificación. Puede variar de VM a VM y de plataforma a plataforma. Una plataforma de hardware con memoria etiquetada incluso podría tener cero gastos generales. –
duplicado de [En Java, ¿cuál es la mejor forma de determinar el tamaño de un objeto?] (Http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to- determinar el tamaño de un objeto). – DwB
Creo que también podría depender del contexto en el que esté utilizando el int encuadrado y cualquier optimización que esté haciendo el compilador en tiempo de ejecución. –