我们正在使用一个使用Spring 3.1.0.Final并在WAS 6.1上部署的portlet应用程序。
我们过去使用Spring MVC有多个portlet。这是Spring 3的第一个portlet。我在代码中的大多数地方使用注释和自动装配。
当在服务器中部署此应用程序时,基本堆使用量增加了25+ MB。
我使用Jprofiler进行了分析,发现StringHTTPMessageConverter正在加载内存中占用大约14 MB内存的所有字符集(com.ibm.nio.charset.Charset占用内存)
由于它是一个portlet应用程序,我在我的配置中定义了org.springframework.web.portlet.mvc.annotation.Ann otationMethodHandlerAdapter bean explicity而不是org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter
这是我到目前为止所做的尝试
1)更改StringHttpMessageConvertor设置
在我的配置中定义了以下bean
<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>
<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 MB跳转是否合理? Spring 3.1.0通常的内存占用量是多少?
我的想法已经用完了任何关于微调Spring框架的帮助都会受到高度赞赏。
谢谢和问候
RaviG
答案 0 :(得分:0)
更新:问题已解决,已从配置中删除了代码。我们正在使用Portlet MVC Annotation Handler适配器,因此Servlet MVC Annotation处理程序适配器是不必要的,根本不需要。 StringHttpMessageConvertor由Servlet MVC Annotation Handler标记引入。构造函数中的StringHttpMessageConvertor具有代码来拉入内存中的字符集。