论坛首页 入门技术论坛

Struts2慢的原因

浏览 8283 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-06-25  
Struts2的慢要追溯到它的前身Webwork了,目前已知的主要原因包括:复杂的拦截器链、OGNL表达式解析、Struts2的标签等。
spring + spring JdbcTemplate + spring mvc

struts2的核心是xwork,因为用到了ThreadLocal模式,所以那些Web容器中的对象会跟着当前Thread一跟到底,所以造成了struts2是很占用内存的,尤其是高并发的情况下,如果request的生命周期很长,你会看到内存不断上升。这个是struts2在性能上的一个问题,但是这个却能支撑起其他web框架无法支持的功能。
struts2因为是使用instance-per-request的因此会导致大量的短生命周期对象产生而需要对jvm参数调整。
struts2的default interceptor stack,按需裁剪吧,因为没调用一次,都会触发这个拦截器。
   发表时间:2010-06-25  
那说说你的解决方案啊?
0 请登录后投票
   发表时间:2010-06-25  
引用

Struts2的慢要追溯到它的前身Webwork了,目前已知的主要原因包括:复杂的拦截器链、OGNL表达式解析、Struts2的标签等。


这个不知道lz有没怎么测,struts2 中有开启效率统计的。去测一下,拦截器那并不慢,而且可以配置。

灵活性和性能之间肯定会有一些取舍的。。
0 请登录后投票
   发表时间:2010-06-25  
人云亦云,鹦鹉学舌而已!!
0 请登录后投票
   发表时间:2010-06-25  
mathfox 写道
那说说你的解决方案啊?

呵呵,那随便说几点吧
       复杂的拦截器链、最后一句回答了。
        OGNL表达式解析、用的是反射机制,JVM正在优化. 现在处理速度比之前快了很多.
        Struts2的标签:这个更简单了,你或个标签就行了 jstl、还是什么。
其实这些东西出来,有利有弊。 大多项目还是根据进度选择,。
0 请登录后投票
   发表时间:2010-06-26  
裁剪默认拦截器栈确实是个好办法。。基本用不上那么复杂的功能
0 请登录后投票
   发表时间:2010-06-26  
己把spring mvc 把req,res两个方法参数去掉了,用的就是ThreadLocal,现在方法一个参数也没有,修改MultiActionController这个类,还可以在当前请求的线程内调用的方法中随便拿到这两个参数,何乐而不为
0 请登录后投票
   发表时间:2010-06-26  
还是Spring MVC Spring Spring JDBC好
0 请登录后投票
   发表时间:2010-06-26  
sw1982 写道
裁剪默认拦截器栈确实是个好办法。。基本用不上那么复杂的功能

那还用Struts2干嘛,慢与快是相对的,看怎么用了。
0 请登录后投票
   发表时间:2010-06-26  
   运行速度慢换来的是开发效率的提升,软件的慢可以用硬件来弥补,而且多加一台服务器有时比多招开发人员要来得容易。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics