Как я могу измерить размер объекта, который я посылаю через RMI? - PullRequest
2 голосов
/ 22 января 2009

Я выполняю некоторые настройки производительности своего приложения и хотел бы узнать хороший способ измерения размера объекта, который я отправляю по RMI.

Цель состоит в том, чтобы сделать мой объект более стройным.

Ответы [ 5 ]

0 голосов
/ 07 апреля 2017

Вы должны сначала проверить, какой протокол RMI вы используете. Если вы используете EJB 3 , возможно, он вызывает CORBA (RMI-IIOP). Если вы хотите улучшить производительность, вы можете использовать RMI с избыточным ZIP ( ZIOP ) - сжатую версию GIOP, которая уменьшает использование полосы пропускания. попробуйте http://docs.jboss.org/jbossremoting/2.5.2.SP2/html_single/

0 голосов
/ 22 января 2009

Этого недостаточно - может быть отправлен класс, а также сериализованная форма его экземпляра.

Класс должен быть отправлен только один раз, и его размер будет на диске. Вы отправляете объект только один раз или много раз? Если последнее, размер класса не должен быть важным.

0 голосов
/ 22 января 2009

Несколько месяцев назад я нашел эту статью Счетчик памяти инструментов на сайте Javaspecialist , посвященный расчету использования памяти Java-объектами. Возможно, это может быть полезно для вас.

0 голосов
/ 22 января 2009

Самый простой способ сделать это - вставить тестовый код, который записывает объект в файл. затем посмотрите на размер файла.

или, если вы не хотите записывать на диск (и ваши объекты не будут выбрасывать память):

ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:
0 голосов
/ 22 января 2009

Поскольку ваш объект уже сериализуем - вы можете использовать метод size () для ObjectOutputStream, чтобы сделать это.

...