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

发布于 2024-07-11 14:34:00 字数 75 浏览 5 评论 0原文

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

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

I'm doing some performance tuning on my application and would like to know a good way of measuring the size of the object that I am sending over RMI.

The aim is to make my object leaner.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

陈甜 2024-07-18 14:34:00

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

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

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

the easiest way to do this is to put in some test code which writes the object to a file. then, look at the size of the file.

or, if you don't want to write to disk (and your objects are not going to blow out memory):

ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:
方觉久 2024-07-18 14:34:00

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

Because your object is serializable already - you can use the size() method on ObjectOutputStream to do this.

孤星 2024-07-18 14:34:00

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

You need to check first what RMI protocol you are using. If you are using EJB 3 it might be calling CORBA (RMI-IIOP). If you want to improve the performance you can use the RMI over - Zipped IOP (ZIOP) — A zipped version of GIOP that reduces the bandwidth usage. try http://docs.jboss.org/jbossremoting/2.5.2.SP2/html_single/

大海や 2024-07-18 14:34:00

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

该类只能发送一次,并且大小与磁盘上的大小相同。
您只发送对象一次还是多次? 如果是后者,班级的规模就不重要了。

This is not enough - the class may be sent as well as the serialized form of its instance.

The class should only be sent once and it will be the size it is on disk.
Are you only sending the object once, or many times? If the latter the size of the class shouldn't be important.

白昼 2024-07-18 14:34:00

几个月前,我在 Javaspecialist 站点,有关计算 Java 对象的内存使用情况。 也许它对你有帮助。

A few month ago, I found this article Instrumentation Memory Counter at the Javaspecialist site, about calculating memory usage of Java objects. Perhaps it could be helpful for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文