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 в своем конструкторе имеет код для извлечения кодировок в памяти.