Estoy trabajando en el cálculo del tamaño [memoria utilizada] de un objeto java [hashmap]. Contiene elementos de diferentes tipos de datos [en tiempo de ejecución] por lo que [no-de-elem * tamaño-de-elemento] no es un buen enfoque. El código en este momento lo hace por series deCálculo del tamaño de bytes del objeto Java
if (x)
do something
else if (primitives)
lookup size and calculate
Sin embargo, este proceso es una CPU hog e in-efficient.
Pienso en siguiente lugar 2 enfoques:
- serializar el objeto a un búfer y obtener el tamaño.
- Mira en java.lang.instrument para obtener el tamaño
Busco anyones experiencia con estos enfoques para el rendimiento, la eficiencia, la ampliación etc o si conoce alguna forma mejor.
P.S: Esta es una utilidad de fondo que estoy construyendo, por lo que no es necesario que el tamaño sea muy preciso, aunque debería ser lo correcto. Así que estoy dispuesto a exactitud comercio para un rendimiento
No estoy interesado en el tamaño de profundidad [el tamaño de los objetos que se refirió por este objeto no será computada.]
Busco a comparaciones de rendimiento y la comprensión de cómo getObjectSize() trabaja internamente .so que no messup algo más para mejorar el rendimiento
Gracias
¿Qué * exactamente * quieres decir con el tamaño? Cantidad de memoria ocupada? Cantidad de elementos contenidos? –
por tamaño, me refiero a la cantidad de memoria tomada ... edición para reflejar que – codeObserver
Pregunta más o menos idéntica: http://stackoverflow.com/questions/757300/programatically-calculate-memory-occupied-by-a-java- object-including-objects-it-r – andersoj