2012-03-27 12 views
5

L'aggiunta di variabili membro a una classe aumenta certamente l'ingombro di memoria delle sue istanze nell'heap, ma per quanto riguarda i metodi di una classe?L'aggiunta di metodi a una classe Java aumenta l'utilizzo della memoria delle sue istanze?

Ad esempio, se ho una classe composta da un singolo StringBuilder, ma continuo ad aggiungere dozzine di metodi per manipolare quello StringBuilder, ogni istanza di quella classe occuperà proporzionalmente più memoria mentre aggiungo più metodi?

Grazie!

+0

Grazie per le vostre risposte, a tutti! – Syndog

risposta

12

No, l'aggiunta di metodi non aumenta l'ingombro dell'oggetto, ma solo l'ingombro del codice compilato. In altre parole, il costo della memoria per istanza è zero.

4

La risposta breve è no, non aggiungerà più memoria a ciascun oggetto che vive nell'heap. L'unica cosa che succederà è quando la classe viene caricata per la prima volta, caricherà anche questi metodi.

+1

Bene, questa risposta lo sottovaluta un po '. La Oracle Hotspot VM compila bytecode fino al codice nativo una volta che un metodo è stato richiamato un certo numero di volte e, a questo punto, esegue anche l'inlining del metodo dinamico. Quindi altre cose accadono quando si aggiungono altri metodi: è solo che questo è un costo della * classe *, non delle * istanze *. –

2

Questo è specifico della VM, ma per la VM Hotspot Oracle utilizzata da tutti, no, la dimensione dell'istanza non è influenzata.

Problemi correlati