StringHTTPMessageConverter загружает все кодировки, вызывающие скачок кучи Java

У нас есть приложение с портлетами, которое использует Spring 3.1.0.Final и развернуто на WAS 6.1.

В прошлом у нас было несколько портлетов, использующих Spring MVC. Это первый портлет Spring 3. Я использую аннотации и автоматическую разводку в большинстве мест в коде.

Когда это приложение развернуто на сервере, базовая куча увеличилась на 25+ МБ.

Я сделал профилирование с помощью Jprofiler и обнаружил, что StringHTTPMessageConverter загружает все наборы символов в памяти, которая занимает около 14 МБ памяти (com.ibm.nio.charset.Charset занимает память)

Поскольку это приложение с портлетами, у меня есть структура bean org.springframework.web.portlet.mvc.annotation.Ann otationMethodHandlerAdapter, определенная в моей конфигурации, а не org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter

Это то, что я пытался сделать до сих пор

1) Измените настройки StringHttpMessageConvertor

Определен следующий бин в моей конфигурации

<bean class = "org.springframework.web.servlet.mvc.annotation.An notationMethodHandlerAdapter">
<property name = "messageConverters">
<list>
<bean class = "org.springframework.http.converter.StringHttpMess ageConverter">
<property name = "supportedMediaTypes">
<list>
   text/plain;charset=UTF-8
</list>
</property>
</bean>
 </list>
</property>

Не повезло с этим.

2) Я определил в моем конфигурационном файле. Как предложено в некоторых сообщениях, я также попробовал описанную выше конфигурацию, закомментировав тег. Но не повезло.

3) Как предлагалось на некоторых форумах, я пытался написать BeanPostProcessor, но не смог найти класс StringHttpMessageConverter.

Нужно ли явно определять org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter в моей конфигурации?

Мои вопросы

1) Есть ли способ избежать загрузки всех кодировок в памяти?

2) Также оправдан ли переход в базовую кучу на 25 МБ? Каков обычный отпечаток памяти в Spring 3.1.0?

У меня заканчиваются идеи. Любая помощь в тонкой настройке среды Spring будет принята с благодарностью.

Спасибо и С уважением

RaviG

1 ответ

Решение

Обновление: проблема решена, удален тег из конфигурации. Мы используем адаптеры обработчика аннотаций Portlet MVC, поэтому адаптеры обработчика аннотаций Servlet MVC были не нужны и не нужны вообще. StringHttpMessageConvertor был извлечен тегом обработчика аннотаций сервлета MVC. StringHttpMessageConvertor в своем конструкторе имеет код для извлечения кодировок в памяти.

Другие вопросы по тегам