如何测量通过RMI发送的对象的大小?

时间:2009-01-22 09:54:03

标签: java performance rmi

我正在对我的应用程序进行一些性能调整,并希望知道一种测量我通过RMI发送的对象大小的好方法。

目的是让我的对象更精简。

5 个答案:

答案 0 :(得分:0)

因为您的对象已经可序列化 - 您可以使用ObjectOutputStream上的size()方法来执行此操作。

答案 1 :(得分:0)

最简单的方法是输入一些将对象写入文件的测试代码。然后,看看文件的大小。

或者,如果您不想写入磁盘(并且您的对象不会破坏内存):

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

答案 2 :(得分:0)

  

这还不够 - 可以发送类以及其实例的序列化形式。

该类只应发送一次,它将是磁盘上的大小。 你只发送一次或多次发送对象吗?如果后者的规模不重要。

答案 3 :(得分:0)

您需要先检查您正在使用的RMI协议。如果您使用 EJB 3 ,则可能正在调用CORBA(RMI-IIOP)。如果您想提高性能,可以使用RMI over - Zipped IOP( ZIOP ) - GIOP的压缩版本,可减少带宽使用。试试http://docs.jboss.org/jbossremoting/2.5.2.SP2/html_single/

答案 4 :(得分:-1)

几个月前,我在Instrumentation Memory Counter站点找到了这篇文章Javaspecialist,关于计算Java对象的内存使用情况。也许它对你有帮助。