我们有一个使用 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,而不是 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>
没有运气。
2)我已经在我的配置文件中定义了。正如一些帖子中所建议的,我还通过注释掉标签来尝试上述配置。但没有运气。
3) 正如一些论坛所建议的那样,我尝试编写 BeanPostProcessor 但找不到 StringHttpMessageConverter 类。
我是否需要在我的配置中明确定义 org.springframework.web.servlet.mvc.annotation.Ann otationMethodHandlerAdapter?
我的问题是
1)有什么办法可以避免所有字符集加载到内存中?
2) 基堆中的 25 MB 跳跃也是合理的吗?Spring 3.1.0 通常的内存足迹是什么?
我已经没有想法了 任何有关微调 Spring 框架的帮助将不胜感激。
谢谢并恭祝安康
拉维格