Weblogic的JSP问题解决方法

 我来答
世纪网络17
2022-11-03 · TA获得超过5951个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:143万
展开全部

  

  在做项目的时候 JSP在运行的时候出现了一些问题 现将我的问题解决方法做一个小结 供以后作项目的参考

   问题

  weblogic 的数据库连接数目在程序运行中不断增长 最后连接数目超过最大数 导致weblogic服务关闭

   原因

  在操作完数据库后 没有关闭数据库连接 或者是返回结果集(Resultset) 而无法在JSP中关闭数据库连接

   解决方法

   .在操作完数据库要关闭数据库连接

   .尽量不要返回结果集Resultset 可以返回Vector(一个字段) Hashtable(多个字段) 这样可以在javabean中关闭数据库

   .如果javabean中返回的是结果集(Resultset) 也可以在javaBean中写一个connectDB(连接数据库) closeDB(关闭数据库)的方法 然后jsp里面调用connectDB() 建立数据库连接 同时就可以对数据库进行操作了 操作数据库完毕 可以通过closeDB() 来关闭数据库

   问题

  在运行某一个JSP程序的时候 weblogic 的内存陡然增长 而且居高不下 最终导致weblogic 内存不足 甚至宕机

   原因

  过度使用内存

   解决方法

   .由于数据量比较大 在对字符串进行操作的时候 使用 + 进行字符串连接 而相信大家对String都非常熟悉 我们也经常要用它来做字符串的连接什么的 例如

  String a =b+c file://b c 都是String

  但是在实际的编译中却是这样

  

  String a=new StringBuffer() append(b) append(c) toString()

  显然 在一个简单的语句中却意外的多生成了 个对象

   StringBuffer()

   toString返回的一个String

  我们比较一下这两段程序的性能

  程序片断一

  

  StringBuffer s=new StringBuffer();long start = System currentTimeMillis();for (int i= ;i< ;i++){s += a ;}long stop = System currentTimeMillis();System out println(stop start);

  程序片断二

  

  StringBuffer s=new StringBuffer( );//long start=System currentTimeMillis(); for (int i= ;i< ;i++){s append( a ); }long stop=System currentTimeMillis();System out println(stop start);

  比较一下结果 差距很明显

  至于为什么String的连接这么做 因为String无法直接改变其长度 而必须采用StringBuffer的用法

  因此建议使用StringBuffer 的append 方法来进行字符串相连

lishixinzhi/Article/program/Java/hx/201311/26440

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式