小码问答,有问必答!

2020-06-05 14:37

tomcat关闭的时候报错:web应用程序似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未停止,可能会造成内存泄漏,怎么办?

2020-06-05 14:37 回答了这个问题

具体异常如下:

image.png

可以做个监听器:

@WebListener
public class ContextFinalizer implements ServletContextListener {

    private static final Logger logger = LoggerFactory.getLogger(ContextFinalizer.class);

    public void contextInitialized(ServletContextEvent sce) {
    }

    public void contextDestroyed(ServletContextEvent sce) {
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        Driver d = null;
        while (drivers.hasMoreElements()) {
            try {
                d = drivers.nextElement();
                DriverManager.deregisterDriver(d);
                logger.warn(String.format("Driver %s deregistered", d));
            } catch (SQLException ex) {
                logger.warn(String.format("Error deregistering driver %s", d), ex);
            }
        }

        AbandonedConnectionCleanupThread.uncheckedShutdown();

    }
}


0条评论

我要评论