锁定老帖子 主题:Struts2慢的原因
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-25
spring + spring JdbcTemplate + spring mvc struts2的核心是xwork,因为用到了ThreadLocal模式,所以那些Web容器中的对象会跟着当前Thread一跟到底,所以造成了struts2是很占用内存的,尤其是高并发的情况下,如果request的生命周期很长,你会看到内存不断上升。这个是struts2在性能上的一个问题,但是这个却能支撑起其他web框架无法支持的功能。 struts2因为是使用instance-per-request的因此会导致大量的短生命周期对象产生而需要对jvm参数调整。 struts2的default interceptor stack,按需裁剪吧,因为没调用一次,都会触发这个拦截器。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-06-25
那说说你的解决方案啊?
|
|
返回顶楼 | |
发表时间:2010-06-25
引用 Struts2的慢要追溯到它的前身Webwork了,目前已知的主要原因包括:复杂的拦截器链、OGNL表达式解析、Struts2的标签等。 这个不知道lz有没怎么测,struts2 中有开启效率统计的。去测一下,拦截器那并不慢,而且可以配置。 灵活性和性能之间肯定会有一些取舍的。。 |
|
返回顶楼 | |
发表时间:2010-06-25
人云亦云,鹦鹉学舌而已!!
|
|
返回顶楼 | |
发表时间:2010-06-25
mathfox 写道 那说说你的解决方案啊?
呵呵,那随便说几点吧 复杂的拦截器链、最后一句回答了。 OGNL表达式解析、用的是反射机制,JVM正在优化. 现在处理速度比之前快了很多. Struts2的标签:这个更简单了,你或个标签就行了 jstl、还是什么。 其实这些东西出来,有利有弊。 大多项目还是根据进度选择,。 |
|
返回顶楼 | |
发表时间:2010-06-26
裁剪默认拦截器栈确实是个好办法。。基本用不上那么复杂的功能
|
|
返回顶楼 | |
发表时间:2010-06-26
己把spring mvc 把req,res两个方法参数去掉了,用的就是ThreadLocal,现在方法一个参数也没有,修改MultiActionController这个类,还可以在当前请求的线程内调用的方法中随便拿到这两个参数,何乐而不为
|
|
返回顶楼 | |
发表时间:2010-06-26
还是Spring MVC Spring Spring JDBC好
|
|
返回顶楼 | |
发表时间:2010-06-26
sw1982 写道 裁剪默认拦截器栈确实是个好办法。。基本用不上那么复杂的功能
那还用Struts2干嘛,慢与快是相对的,看怎么用了。 |
|
返回顶楼 | |
发表时间:2010-06-26
运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。
|
|
返回顶楼 | |