Pregunta

Estoy haciendo algunos ajustes de rendimiento en mi aplicación y me gustaría conocer una buena manera de medir el tamaño del objeto que estoy enviando a través de RMI.

El objetivo es hacer que mi objeto sea más delgado.

¿Fue útil?

Solución

la forma más fácil de hacer esto es poner un código de prueba que escriba el objeto en un archivo. luego, mire el tamaño del archivo.

o, si no desea escribir en el disco (y sus objetos no van a destruir la memoria):

ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:

Otros consejos

Debido a que su objeto ya es serializable, puede usar el método size () en ObjectOutputStream para hacer esto.

Primero debe verificar qué protocolo RMI está utilizando. Si está utilizando EJB 3 , podría estar llamando a CORBA (RMI-IIOP). Si desea mejorar el rendimiento, puede usar el RMI sobre-IOP comprimido ( ZIOP ) & # 8212; Una versión comprimida de GIOP que reduce el uso de ancho de banda. intente http://docs.jboss.org/jbossremoting/2.5.2. SP2 / html_single /

  

Esto no es suficiente: se puede enviar la clase y la forma serializada de su instancia.

La clase solo se debe enviar una vez y tendrá el tamaño que tiene en el disco. ¿Está enviando el objeto solo una vez, o muchas veces? Si esto último, el tamaño de la clase no debería ser importante.

Hace unos meses, encontré este artículo Contador de memoria de instrumentación en el < un sitio href = "http://www.javaspecialists.eu/" rel = "nofollow noreferrer"> Javaspecialist , sobre el cálculo del uso de memoria de objetos Java. Tal vez podría ser útil para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top