Sto lavorando per calcolare la dimensione [memoria utilizzata] di un oggetto java [hashmap]. Contiene elementi di diversi tipi di dati [in fase di esecuzione] quindi [non-di-elem * size-of-element] non è un buon approccio. Il codice adesso lo fa per serie diCalcolo della dimensione in byte dell'oggetto Java
if (x)
do something
else if (primitives)
lookup size and calculate
Tuttavia questo processo è un maiale CPU ed inefficiente.
Sto pensando di seguire 2 approcci invece:
- serializzare l'oggetto in un buffer e ottenere le dimensioni.
- Guardate in java.lang.instrument per ottenere la dimensione
Cerco anyones esperienza con questi approcci per prestazioni, efficienza, scalabilità ecc o se conoscete un modo migliore.
P.S: Questa è un'utilità di background che sto costruendo in modo che la dimensione non sia eccessivamente accurata sebbene debba essere corretta. Quindi io sono disposto a scambiare la precisione per le prestazioni
non mi interessa nel profondo dimensioni [le dimensioni degli oggetti che sono riferiti da questo oggetto non sarà calcolato.]
Cerco un confronto delle prestazioni e capire come funziona internamente getObjectSize() ..così che non messup qualcos'altro per migliorare le prestazioni
Grazie
Cosa * esattamente * intendi per dimensione? Quantità di memoria occupata? Numero di elementi contenuti? –
in base alle dimensioni, intendo la quantità di memoria utilizzata. Modifica per rispecchiare quella domanda – codeObserver
Più o meno identica: http://stackoverflow.com/questions/757300/programatically-calculate-memory-occupied-by-a-java- object-including-objects-it-r – andersoj