¿Cómo puedo medir el tamaño del objeto que envío a través de RMI?
-
19-08-2019 - |
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.
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.