Sto studiando java e ricordo di aver letto da qualche parte che gli oggetti java avevano un sovraccarico all'interno della JVM, che era stato usato per ragioni di amministrazione dalla macchina virtuale. Quindi la mia domanda è: qualcuno può dirmi se e come posso ottenere la dimensione totale di un oggetto nella JVM HotSpot, insieme a qualsiasi sovraccarico con cui possa venire?Ulteriori informazioni sull'overhead degli oggetti in JVM
risposta
Non è possibile ottenere direttamente l'overhead. La quantità di sovraccarico dipende dall'implementazione e può variare in base a una serie di fattori (ad esempio, la versione precisa di JVM e se si è su una JVM a 32 o 64 bit).
Tuttavia è ragionevolmente sicuro assumere che nelle tipiche implementazioni JVM moderne come HotSpot, l'overhead per oggetto è tra 8 e 16 byte. Gli array hanno in genere un sovraccarico di 4 byte più grande di altri oggetti (per contenere la lunghezza dell'intero array).
Consulta anche:
ho trovato this article piuttosto informativo, anche se ho avuto qualche dubbio da alcuni dei valori indicati nelle tabelle
Si noti che le risposte che consistono solo in un collegamento sono generalmente scoraggiate; vedi http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers. Forse potresti riassumere le parti rilevanti dell'articolo. – sleske
possibile duplicati di [Qual è il consumo di memoria di un oggetto in Java?] (Http://stackoverflow.com/questions/258120/what-is-the-memory-cons umption-of-an-object-in-java) –
Hai dato un'occhiata a http://stackoverflow.com/questions/258120/what-is-the-memory-consumption-of-an-object-in-java ? –
Non sto esattamente chiedendo la stessa cosa. Sto chiedendo il sovraccarico e la dimensione totale in modo da poter ricavare una percentuale del sovraccarico rispetto alla dimensione totale. – NlightNFotis