2012-07-30 4 views
5

Ho alcuni problemi nell'ottenere la dimensione di un oggetto in JVM. JDK 5 offre un'interfaccia Instrumentation per calcolare tramite la funzione premain(), ma non so come usarla.Esempio JVM getObjectSize

Qualcuno può aiutarmi?

+1

È probabile che l'utilizzo di un profiler di memoria sia un modo molto più semplice per eseguire questa operazione (ovvero per cosa è stato progettato) –

risposta

9

la più semplice e la soluzione più efficace è quello di utilizzare molto piccolo sizeof biblioteca

<dependency> 
    <groupId>com.carrotsearch</groupId> 
    <artifactId>java-sizeof</artifactId> 
    <version>0.0.3</version> 
</dependency> 

è necessario utilizzare questo http://grepcode.com/file/repo1.maven.org/maven2/com.carrotsearch/java-sizeof/0.0.2/com/carrotsearch/sizeof/RamUsageEstimator.java?av=f

shallowSizeOf() metodo o sizeOf()

Questa è davvero la più semplice soluzione veloce di lavoro che ho trovato finora su questo argomento ...

+2

Ecco la presentazione dell'autore di questa libreria: http://www.slideshare.net/DawidWeiss /sizeofobject-how-much-memory-objects-take-on-jvms-and-when-this-may-matter?ref=http://cheremin.blogspot.com/2012/05/how-much-memory-objects -take-on-jvm-and.html –

+1

Le fonti sono qui: https://github.com/dweiss/java-sizeof –

+0

grazie funziona – fleture

0

Si potrebbe trovare utile per utilizzare il MemoryMeasurer library, quali pacchetti di misura semplice memoria in un'API relativamente semplice. (In alternativa, si può guardare al suo codice sorgente per vedere come si utilizza la strumentazione.)

1

Un altro progetto open source che può essere d'aiuto è Jamm che utilizza anche un agente JVM.