我正在对我的应用程序进行一些性能调整,并希望知道一种测量我通过RMI发送的对象大小的好方法。
目的是让我的对象更精简。
答案 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对象的内存使用情况。也许它对你有帮助。