java web项目关闭时内存泄漏

akke_z 2017-04-17 09:39:32
最近自己写的一个web项目,但是关闭tomcat的时候都会报警告,说是线程没有停止,内存泄漏
警告: The web application [ImageUpload] registered the JDBC driver [com.mysql.cj.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
四月 17, 2017 8:10:25 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: The web application [ImageUpload] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
四月 17, 2017 8:10:25 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: The web application [ImageUpload] appears to have started a thread named [Resource Destroyer in BasicResourcePool.close()] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.io.BufferedOutputStream.write(BufferedOutputStream.java:117)
java.io.FilterOutputStream.write(FilterOutputStream.java:97)
com.mysql.cj.mysqla.io.SimplePacketSender.send(SimplePacketSender.java:46)
com.mysql.cj.mysqla.io.TimeTrackingPacketSender.send(TimeTrackingPacketSender.java:43)
com.mysql.cj.mysqla.io.MysqlaProtocol.send(MysqlaProtocol.java:552)
com.mysql.cj.mysqla.io.MysqlaProtocol.quit(MysqlaProtocol.java:1294)
com.mysql.cj.mysqla.MysqlaSession.quit(MysqlaSession.java:224)
com.mysql.cj.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:3239)
com.mysql.cj.jdbc.ConnectionImpl.close(ConnectionImpl.java:1113)
com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:642)
com.mchange.v2.c3p0.impl.NewPooledConnection.closeMaybeCheckedOut(NewPooledConnection.java:255)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:622)
com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:1076)
com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:1101)
com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:1062)
com.mchange.v2.resourcepool.BasicResourcePool.access$100(BasicResourcePool.java:44)
com.mchange.v2.resourcepool.BasicResourcePool$5.run(BasicResourcePool.java:1316)
网上给出的方法是注册listener然后写一个ServletContextListener来在程序关闭的时候关闭相应的线程
想问一下有没有其他方法,担心是配置出了问题
...全文
358 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
我爱娃哈哈 2017-04-20
  • 打赏
  • 举报
回复
内存泄漏说明你代码里面有些该关的东西没关,检查下吧,然后把jvm内存调大点
akke_z 2017-04-18
  • 打赏
  • 举报
回复
有人碰到到过一样的问题吗,求告知解决方法
akke_z 2017-04-17
  • 打赏
  • 举报
回复
引用 6 楼 pany1209 的回复:
[quote=引用 5 楼 qq_33902234 的回复:] [quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 pany1209 的回复:] 你用的是tomcat6???
把tomcat里面的server.xml里面的监听去掉。。。 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>[/quote] 我用的是tomcat8[/quote] 你把tomcat8里面的server.xml的 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>注释掉试试[/quote] 注释掉之后The web application [ImageUpload] appears to have started a thread named [Resource Destroyer in BasicResourcePool.close()] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread这个警告没有了,但是另外两个还有
李德胜1995 2017-04-17
  • 打赏
  • 举报
回复
引用 5 楼 qq_33902234 的回复:
[quote=引用 4 楼 pany1209 的回复:] [quote=引用 3 楼 pany1209 的回复:] 你用的是tomcat6???
把tomcat里面的server.xml里面的监听去掉。。。 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>[/quote] 我用的是tomcat8[/quote] 你把tomcat8里面的server.xml的 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>注释掉试试
akke_z 2017-04-17
  • 打赏
  • 举报
回复
引用 4 楼 pany1209 的回复:
[quote=引用 3 楼 pany1209 的回复:] 你用的是tomcat6???
把tomcat里面的server.xml里面的监听去掉。。。 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>[/quote] 我用的是tomcat8
李德胜1995 2017-04-17
  • 打赏
  • 举报
回复
引用 3 楼 pany1209 的回复:
你用的是tomcat6???
把tomcat里面的server.xml里面的监听去掉。。。 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
李德胜1995 2017-04-17
  • 打赏
  • 举报
回复
你用的是tomcat6???
一支支穿云箭 2017-04-17
  • 打赏
  • 举报
回复
顶一下!不是很懂····
akke_z 2017-04-17
  • 打赏
  • 举报
回复
还有相关bean的注册的xml是这样 <!-- Getting Database properties --> <context:property-placeholder location="classpath:db-config.properties"/> <!-- DataSource --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${database.driverClass}"/> <property name="jdbcUrl" value="${database.url}"/> <property name="user" value="${database.username}"/> <property name="password" value="${database.password}"/> <property name="acquireIncrement" value="${connection.acquireIncrement}"/> <property name="minPoolSize" value="${connection.minPoolSize}"/> <property name="maxPoolSize" value="${connection.maxPoolSize}"/> <property name="maxIdleTime" value="${connection.maxIdleTime}"/> </bean> <!-- Hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> </props> </property> <property name="packagesToScan" value="com.ImageUpload.dao"></property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="transactionManager" />

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧