2012-03-27 19 views
5

Agregar variables miembro a una clase sin duda aumenta la huella de memoria de sus instancias en el montón, pero ¿qué pasa con los métodos de una clase?¿Agregar métodos a una clase Java aumenta el uso de memoria de sus instancias?

Por ejemplo, si tengo una clase compuesta por un único StringBuilder, pero sigo agregando docenas de métodos para manipular ese StringBuilder, ¿cada instancia de esa clase ocupará proporcionalmente más memoria a medida que agregue más métodos?

Gracias!

+0

Gracias por sus respuestas, ¡a todos! – Syndog

Respuesta

12

No, agregar métodos no aumenta la huella del objeto, solo la huella del código compilado. En otras palabras, el costo de memoria por instancia es cero.

4

La respuesta corta es no, no agregará más memoria a cada objeto que viva en el montón. Lo único que sucederá es que cuando la clase se cargue por primera vez, también cargará estos métodos.

+1

Bueno, esta respuesta lo subestima un poco. La máquina virtual de Hotspot de Oracle compila el bytecode hasta el código nativo una vez que se ha invocado un método varias veces, y en este punto también realiza la alineación dinámica del método. Entonces, suceden otras cosas cuando agrega más métodos, es solo que este es un costo de la * clase *, no de las * instancias *. –

2

Esto es específico de VM, pero para la máquina virtual de Hotspot de Oracle que todo el mundo usa, no, el tamaño de la instancia no se ve afectado.

Cuestiones relacionadas