java提高代码复用 代码复用可以提高程序执行速度( 四 )


对于那些无需跟踪会话状态的页面,关闭自动创建的会话可以节省一些资源 。使用如下page指令:%@ page session="false"%
20、JDBC与I/O
如果应用程序需要访问一个规模很大的数据集,则应当考虑使用块提取方式 。默认情况下,JDBC每次提取32行数据 。举例来说,假设我们要遍历一个5000行的记录集,JDBC必须调用数据库157次才能提取到全部数据 。如果把块大小改成512,则调用数据库的次数将减少到10次 。
[p][/p]21、Servlet与内存使用
许多开发者随意地把大量信息保存到用户会话之中 。一些时候,保存在会话中的对象没有及时地被垃圾回收机制回收 。从性能上看,典型的症状是用户感到系统周期性地变慢,却又不能把原因归于任何一个具体的组件 。如果监视JVM的堆空间,它的表现是内存占用不正常地大起大落 。
解决这类内存问题主要有二种办法 。第一种办法是 , 在所有作用范围为会话的Bean中实现HttpSessionBindingListener接口 。这样,只要实现valueUnbound()方法,就可以显式地释放Bean使用的资源 。另外一种办法就是尽快地把会话作废 。大多数应用服务器都有设置会话作废间隔时间的选项 。另外,也可以用编程的方式调用会话的setMaxInactiveInterval()方法,该方法用来设定在作废会话之前 , Servlet容器允许的客户请求的最大间隔时间,以秒计 。
22、使用缓冲标记
一些应用服务器加入了面向JSP的缓冲标记功能 。例如 , BEA的WebLogic Server从6.0版本开始支持这个功能,Open
Symphony工程也同样支持这个功能 。JSP缓冲标记既能够缓冲页面片断,也能够缓冲整个页面 。当JSP页面执行时,如果目标片断已经在缓冲之中,则生成该片断的代码就不用再执行 。页面级缓冲捕获对指定URL的请求,并缓冲整个结果页面 。对于购物篮、目录以及门户网站的主页来说,这个功能极其有用 。对于这类应用,页面级缓冲能够保存页面执行的结果,供后继请求使用 。
23、选择合适的引用机制
在典型的JSP应用系统中,页头、页脚部分往往被抽取出来,然后根据需要引入页头、页脚 。当前,在JSP页面中引入外部资源的方法主要有两种:include指令,以及include动作 。
include指令:例如%@ include file="copyright.html"
% 。该指令在编译时引入指定的资源 。在编译之前,带有include指令的页面和指定的资源被合并成一个文件 。被引用的外部资源在编译时就确定,比运行时才确定资源更高效 。
include动作:例如jsp:include page="copyright.jsp"
/ 。该动作引入指定页面执行后生成的结果 。由于它在运行时完成,因此对输出结果的控制更加灵活 。但时 , 只有当被引用的内容频繁地改变时,或者在对主页面的请求没有出现之前,被引用的页面无法确定时 , 使用include动作才合算 。
24、及时清除不再需要的会话
为了清除不再活动的会话,许多应用服务器都有默认的会话超时时间 , 一般为30分钟 。当应用服务器需要保存更多会话时 , 如果内存容量不足,操作系统会把部分内存数据转移到磁盘,应用服务器也可能根据“最近最频繁使用”(Most
Recently
Used)算法把部分不活跃的会话转储到磁盘,甚至可能抛出“内存不足”异常 。在大规模系统中 , 串行化会话的代价是很昂贵的 。当会话不再需要时,应当及时调用HttpSession.invalidate()方法清除会话 。HttpSession.invalidate()方法通常可以在应用的退出页面调用 。
25、不要将数组声明为:public static final。
26、HashMap的遍历效率讨论

推荐阅读