【发布时间】:2013-03-24 02:33:30
【问题描述】:
我们有一个使用 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 框架的帮助将不胜感激。
感谢和问候
拉维格
【问题讨论】:
标签: performance spring-mvc character-encoding heap-memory large-object-heap