回答
做到这一点,最简单的方法是把一些测试代码的对象写入到文件中。然后,看看文件的大小。
,或者,如果你不想写入到磁盘(和你的对象都不会吹出来的内存):
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:
因为你的对象是可序列化已经 - 您可以使用ObjectOutputStream的大小()方法来做到这一点。
ObjectOutputStream没有大小的方法 - 你可能想澄清你的意思。 – McDowell 2009-01-22 11:38:09
我的意思是ByteArrayOutputStream - 感谢您的更正。 – Fortyrunner 2009-01-22 11:56:41
唉,看着它,这种机制是不可靠的 - 见我的帖子。 – McDowell 2009-01-22 12:02:07
数个月前,我发现这篇文章Instrumentation Memory Counter在Javaspecialist网站,有关计算的Java对象的内存使用情况。也许它可能对你有所帮助。
这是不够的 - 类也可以被发送作为其实例的序列化形式。
该类只应发送一次,它将是它在磁盘上的大小。 你只发送一次或多次发送该对象?如果后者的规模不应该很重要。
你需要检查你正在使用的第一件事RMI协议。如果您使用的是EJB 3它可能会调用CORBA(RMI-IIOP)。如果要提高性能,可以使用RMI过压IOP(ZIOP) - GIOP的压缩版本,可降低带宽使用量。请尝试将目标精简为使用常用字符串枚举的http://docs.jboss.org/jbossremoting/2.5.2.SP2/html_single/
- 1. 如何测量Ruby对象的大小?
- 2. 确定通过netowrk发送的对象的大小
- 3. 通过android上的蓝牙发送对象,我如何serialise对象和发送?
- 4. 有没有办法通过RMI对象发送事件?
- 5. 异常时,通过RMI参数发送对象
- 6. 通过网络发送对象向量
- 7. 如何通过intent发送对象
- 8. Angular:如何通过$ http.get发送对象?
- 9. 如何通过包发送对象
- 10. 如何通过TCP发送JSON对象?
- 11. 我将如何通过HTTP POST发送填充对象的NSArray?
- 12. 测量.NET对象的大小
- 13. 测量HttpSession对象的大小
- 14. 通过tcp发送可发送对象
- 15. JSON对象的大小通过的WebSockets
- 16. RMI或Servlets通过防火墙将对象发送到applet或从applet发送对象?
- 17. JS如何测量FormData对象的大小?
- 18. 通过带有对象输入/输出流的Socket发送的对象的大小真的很重要吗?
- 19. 如何通过引用获取对象的大小?
- 20. 如何通过Android的请求发送JSON对象?
- 21. 如何通过apache发送序列化的java对象?
- 22. 如何通过NIO中的SocketChannel发送和接收对象
- 23. 如何通过Android的HttpClient请求发送JSON对象?
- 24. 如何通过.NET 3.5中的NamedPipe发送对象?
- 25. 如何通过webservice发送大psd
- 26. Android:如何通过绑定发送带有成员对象的对象?
- 27. 发送Json对象通过Jquery加载
- 28. 通过邮件发送对象
- 29. 通过JMS发送JSON对象?
- 30. 用Java通过TCP发送JSON对象
的一种方式。确保你也使用transient来填充你不想序列化的字段。编写你自己的readObject/writeObjects,并实现一个版本控制系统。 – Fortyrunner 2009-01-22 10:24:47