2014-01-17 2 views
0

Я хочу измерить размер объекта (сериализованный или нет), когда он установлен на HttpSession. Как я могу это сделать ? Даже некоторые вспомогательные вопросы были найдены, его нельзя было использовать. Кто-нибудь знает, как я могу это сделать? Вероятно, использование прослушивателя сеанса может быть полезным. Но как измерить размер объекта? НапримерИзмерение размера объектов атрибута сеанса

session.setAttribute("attrName",sessionObj); 

Как измерить размер этого sessionObj?

ответ

1

Вы можете использовать java.lang.instrument для измерения размера объекта.

Этот класс предоставляет услуги, необходимые для программирования Java программирования . Инструментарий - это добавление байт-кодов к методам с целью сбора данных, которые будут использоваться инструментами. Поскольку изменения являются чисто аддитивными, эти инструменты не изменяют состояние или поведение приложения . Примеры таких доброкачественных инструментов включают в себя: контрольные агенты, профайлеры, анализаторы покрытия и регистраторы событий.

Этот пример answer является примером его использования.

Как вы заявили, [HttpSessionAttributeListener][3] - хорошее место для проверки размера добавленных атрибутов. Добавьте сюда код для размера.

public void attributeAdded(ServletContextAttributeEvent scae) { 
    System.out.println("Attribute addedd:["+scae.getName()+"],"+scae.getValue()); 
} 
+0

Спасибо, много .. но одно объяснение для Instrumentation. как вычислить размер объекта внутри метода «getObjectSize()» Instrumentation? –

+0

http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to-determine-the-size-of-an-object – user987339

Смежные вопросы