2009-03-10 18 views
5

¿Cuál es el tamaño de un Objeto asignado en el montón en .NET, incluida la sobrecarga de administración? Supongo que los objetos se asignan a lo largo de los límites de 4 bytes, o se utiliza un enfoque diferente?.NET Tamaño del objeto

+0

Ver: http://stackoverflow.com/questions/324053/find-out-the-size-of-a-net-object –

+0

Jon B: Esa pregunta es sobre el tamaño de cualquier objeto en .NET mientras este la pregunta es sobre el tamaño de las instancias de la clase de objetos .NET. Una pregunta totalmente diferente. –

Respuesta

5

límites de 4 bytes en x86. Posiblemente límites de 8 bytes en x64.

Hay una sobrecarga de 8 bytes en x86, para una referencia de tipo y un bloque de sincronización. No me sorprendería encontrar 12 o 16 bytes en x64.

Por alguna razón, en x86 una instancia de System.Object solo parece tener 12 bytes, 12 bytes hacer el tamaño mínimo posible - pero una clase con un int también tiene 12 bytes. No tengo idea de por qué este es el caso.

+0

No debería poder contestar las preguntas de nivel alto y bajo tan bien. Estoy reteniendo con una nueva etiqueta: stump-the-skeet. En este caso, esta pregunta es el muñón: fracaso. –

+0

Esa etiqueta no duró mucho. ;-) –

+0

figurado Pensé que lo intentaría. :) –

1

Depende de una máquina, en la máquina de 32 bits suele ser de 4 bytes. Sin embargo, en el cuadro de 64 bits, es de 8 bytes, y así sucesivamente.

+0

Creo que estás hablando del tamaño de una * referencia * en lugar de la sobrecarga del objeto en sí. –

+0

argh, sí. gracias –

Cuestiones relacionadas