0

我們有一個使用Spring 3.1.0.Final並部署在WAS 6.1上的portlet應用程序。StringHTTPMessageConverter加載導致java堆跳轉的所有字符集

我們在過去有多個使用Spring MVC的portlet。這是Spring 3的第一個portlet。我在代碼中的大部分地方使用了註釋和自動裝配。

當此應用程序部署在服務器中時,基本堆用量增加了25+ MB。

我沒有使用JProfiler的分析,發現StringHTTPMessageConverter加載在內存中,其約14 MB的內存佔用的所有字符集(com.ibm.nio.charset.Charset佔用的內存)

既然是門戶應用程序我已經org.springframework.web.portlet.mvc.annotation.Ann otationMethodHandlerAdapter豆明確地在我的配置中定義的,而不是org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter

這是我曾嘗試這樣做遠

1)更改StringHttpMessageConvertor se設置

定義以下豆在我的配置

<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)基本堆中的25MB跳轉是否合理? Spring 3.1.0的常用內存腳印是什麼?

我沒有想法任何有關微調Spring框架的幫助將不勝感激。

感謝和問候

RaviG

回答

0

更新:從配置的問題解決了,去除標籤。我們使用Portlet MVC Annotation Handler適配器,因此Servlet MVC Annotation處理程序適配器是不必要的,根本不需要。 StringHttpMessageConvertor由Servlet MVC Annotation Handler標籤引入。在其構造函數中的StringHttpMessageConvertor有代碼來拉入內存中的字符集。