内存泄漏

08-10-07 little1234
         

终于能发帖了,最近连着几天都看不了, 发帖出去后, 就显示system maintainance. 然后就永远是那样了? 论坛在升级维护?

我的tomcat server最近经常有内存泄漏,可是又不稳定。 用jProfile查了好几天,老说有大量String, char[] 或int[] 没被释放。 可是再查这些object来自哪里, 就报来自没被记录的object, 也就是外部的一些包。没法再查下去了。

而且这种现象也不稳定, 拿jProfile一直跟踪, 有时跟踪了5,6个小时,垃圾回收曲线都是很均匀漂亮的平滑曲线, 而有的时候又是tomcat重启没几分钟, 就出来剧烈的垃圾回收锯齿, 同时cpu和memory都大幅上扬。

有一次用cpu hotspot查, 说是去sqlserver 的一个jdbc call 占用了74%的cpu, 但是这个方法在server没事的时候也是一直执行的啊。

我对性能调优这块有点菜,现在有点头疼,不知接着该从何查起。 各位老大如能指点一下迷津, 不胜感激!

系统用的就是简单的jDon + jsp + jdbcTemp. 没在jdon框架下的class都使用了singleton, 以前一直也比较稳定, 只是最近做了一些改动, 使用了JAI 及时压缩生成一些图片, 还有在model中读取文本文件的内容,存在了model的一个property里。 这些会造成问题吗?

[该贴被little1234于2008-10-07 21:51修改过]

         

banq
2008-10-08 12:05

只是看String Char[]是没有用的,要以包名为查看顺序,这样,才能看到你自己的类。

对象占据内存暴涨后,一般gC后恢复到原来水平,但是如果内存泄漏,那么就不可能完全回到原来水平。

如果一个jdbc call占据74%CPU,那么肯定是有问题的,你可以使用缓存来优化到,这样就减轻这个jdbc的执行次数。

总之,性能调试Jprofiler可以定位哪个具体的类占据CPU最多,哪个具体的类耗内存最多,要得到这个结果,除了正常Jprofiler配置外,还需要将这项目源码目录告诉Jprofiler,至于具体如何配,多多摸索。

参考这个贴:

http://www.jdon.com/jivejdon/thread/34422.html

little1234
2008-10-14 10:23

发贴好痛苦呀。试了两天了,经常报错,发不成功。用了各种浏览器, IE6,firefox, IE7, 不知这次行不行?

little1234
2008-10-14 10:46

终于又能上jdon了, 我的原来的IP被封了? 用ADSL换了一个IP地址,才能看jDon, 耽误我好几天时间. :(

谢谢banq的回复, 我会按package再去查的。

现在问题还没解决, 就临时用重启tomcat service的方法应付着。 但是偶尔会碰到, service 刚起, 访问页面,就报如下错误:

2008-10-13 10:16:39,937 - 0 ERROR [ajp-8009-6] util.Debug - com.jdon.aop.AopClient

java.lang.NullPointerException

这个时候, 我通常再重启一下tomcat service就好了。 请问这是什么原因, 应该如何改动?

另外, 关于这个jive论坛使用功能的一个小建议, 我有好几次发帖, 都说操作失败, 计时。。。。 然后就死在这个计时页面, 回也回不去。 而刚才打的内容也没法选中copy了。这样用起来比较麻烦。 不知能否更改一下?

最近发表回复或发帖失败的几率较大,有时一两天都发不成功一个贴,难道现在这个论坛对客户端的软件有什么要求我没满足?

谢谢。

little1234
2008-10-14 10:46

2008-10-13 10:16:39,937 - 0 ERROR [ajp-8009-6] util.Debug - com.jdon.aop.AopClient

java.lang.NullPointerException at com.jdon.aop.joinpoint.AdvisorChainFactory.create(AdvisorChainFactory.java:69)

at com.jdon.aop.AopClient.invoke(AopClient.java:92)

at com.jdon.bussinessproxy.dyncproxy.DynamicProxyWeaving.invoke(DynamicProxyWeaving.java:62)

at $Proxy0.getLatestUpdates(Unknown Source)

at org.apache.jsp.g.book.index_jsp._jspService(index_jsp.java:232)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at com.jdon.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:92)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)

at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:394)

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)

at java.lang.Thread.run(Unknown Source)

2008-10-13 10:16:39,968 - 31 ERROR [ajp-8009-21] util.Debug - com.jdon.bussinessproxy.dyncproxy.DynamicProxyWeaving

java.lang.Exception: java.lang.NullPointerException

at com.jdon.aop.AopClient.invoke(AopClient.java:98)

at com.jdon.bussinessproxy.dyncproxy.DynamicProxyWeaving.invoke(DynamicProxyWeaving.java:62)

at $Proxy0.getLatestUpdates(Unknown Source)

at org.apache.jsp.g.book.index_jsp._jspService(index_jsp.java:232)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at com.jdon.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:92)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419)

at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:394)

at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.NullPointerException

at java.util.ArrayList.addAll(Unknown Source)

at com.jdon.aop.joinpoint.AdvisorChainFactory.create(AdvisorChainFactory.java:58)

at com.jdon.aop.AopClient.invoke(AopClient.java:92)

... 27 more

4Go 1 2 3 4 下一页