2012-07-30 9 views
5

Tengo algunos problemas para obtener el tamaño de un objeto en JVM. JDK 5 ofrece una interfaz Instrumentation para calcular a través de la función premain(), pero no sé cómo usarla.JVM getObjectSize example

¿Alguien me puede ayudar?

+1

Es probable que el uso de un generador de perfiles de memoria sea una forma mucho más sencilla de hacerlo (para lo que está diseñado) –

Respuesta

9

la más simple y la solución más eficiente es el uso de muy pequeña biblioteca sizeof

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

es necesario utilizar este http://grepcode.com/file/repo1.maven.org/maven2/com.carrotsearch/java-sizeof/0.0.2/com/carrotsearch/sizeof/RamUsageEstimator.java?av=f

shallowSizeOf() método o sizeof()

Esa es realmente la solución rápida más simple que he encontrado sobre este tema hasta ahora ...

+2

Aquí está la presentación del autor de esta biblioteca: 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

Las fuentes están aquí: https://github.com/dweiss/java-sizeof –

+0

gracias funciona – fleture

0

Puede que le resulte útil usar la MemoryMeasurer library, que empaqueta la medición simple de memoria en una API relativamente sencillo. (Alternativamente, se puede ver en su código fuente para ver cómo se utiliza la instrumentación.)

1

Otro proyecto de código abierto que puede ayudarlo es Jamm que también utiliza un agente JVM.