不废话直接看出现的问题:
大致意思就是因为某个程序注册JDBC没有释放连接造成内存泄漏的问题。不过一般不会遇到这个问题,后来我检查一遍发现代码都对。
怎么解决呢?
可以创建一个监听器:用来监听和释放连接。
package com.zlh.oa.action;import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import java.sql.DriverManager;import java.sql.SQLException;public class MyContextListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("webService start"); } @Override public void contextDestroyed(ServletContextEvent arg0) { System.out.println("webService stop"); try { while(DriverManager.getDrivers().hasMoreElements()) { DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement()); } System.out.println("jdbc Driver close"); AbandonedConnectionCleanupThread.checkedShutdown(); System.out.println("clean thread success"); } catch (SQLException e) { e.printStackTrace(); } }}
然后在web.xml中注册监听器就行了。
com.zlh.oa.action.MyContextListener
然后问题成功解决!!!
来源地址:https://blog.csdn.net/qq_50500388/article/details/131153864