« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9709808 建立时间:2004年12月20日 |

| |
[java语言]如何改善java servlet程序运行的性能 原创空间, 软件技术
邢红瑞 发表于 2006/2/26 17:56:48 |
有的朋友问我如何提高java程序的运行效率,其实并不复杂,以下是我的几点经验,做个抛砖引玉,大家别拿砖头打我!1. 避免字符串相加 这是个老生常谈的问题,但是在写servlet的时候,很多人在输出html时,这样写String a = "<html> ";String b = "</html>";String c = a + b;应该使用StringBuffer,String a = "<html> ";String b = "</html>";StringBuffer sb = new StringBuffer(a);sb.append(b);String c = sb.toString();最好使用StringBuffer的带参数构造来代替默认的构造函数,因为StringBuffer的append()方法返回一个StringBuffer实例,最好的写法是这样:StringBuffer sb = new StringBuffer(256);StringBuffer sb = new StringBuffer();sb.append("<html> ").append("</html>");2.不要使用StringTokenizer 例如解析字符串 import java.util.StringTokenizer;public class TestStringTokenizer{public static void main(String[] args){String s = "a,b,c,d";StringTokenizer st = new StringTokenizer(s, ",");while (st.hasMoreTokens()){String token = st.nextToken();System.out.println(token);}}}可以使用String.indexOf()完成相同的功能public class TestIndexOf{public static void main(String[] args){String s = "a,b,c,d";int begin = 0;int end = s.indexOf(",");while (true){String token = null;if (end == -1){token = s.substring(begin);}else{token = s.substring(begin, end);}System.out.println(token);// End if there are no more delimitersif (end == -1) break;begin = end + 1;end = s.indexOf(",", begin);}}}3.一般不要log输出 一般不要使用System.out.println()作为日志输出,最好使用log4j,更易于打开和关闭输出 if(logger.isDebugEnabled()){ logger.debug("logging method handleRequestInternal()...."); }4.避免不必要同步 servlet容器是个多线程的系统,java的关键字synchronized.避免某些情况的程序死锁,但是性能确实大大的降低了。除非特别必要,否则不要使用synchronized。5.尽量使用PreparedStatement多次使用相同的查询语句,PreparedStatement的效率很高,而且避免了sql注入。6.尽量使用连接池使用连接池,可以减少建立连接的时间,而且可以减轻数据库的连接压力。7.大量的使用cache对于经常查询相同数据的网站程序,使用cache是优化的不二法门,oscache是个廉价的方案。8.优化servlet容器 关闭容器的logging,加大他的File read cache size,加大容器的线程数,禁止servlet的重新加载。9.优化jvm,加大heap的初始化字节数,降低虚拟机的垃圾回收频率, |
|
回复:如何改善java servlet程序运行的性能 原创空间, 软件技术
CYINFINITE(游客)发表评论于2006/5/30 9:57:15 |
请问:
1、使用StringTokenizer的缺点是什么?
2、优化jvm,加大heap的初始化字节数,降低虚拟机的垃圾回收频率。能具体说明如何实现吗?
谢谢 |
|
» 1 »
|