问题“Web应用步伐[ROOT]似乎启动了一个名为[mysql-cj-abandoned-connectio ...

打印 上一主题 下一主题

主题 1802|帖子 1802|积分 5406

1 问题形貌

运行情况如下:
项目版本JDK1.8Tomcat9.0.73IDEA2023.3.2 写了一个SSM Java Web 项目,项目能正常运行,但是在关闭项目时(亦即在IDEA中通过按钮关闭Tomcat 9.0.73服务时),如下了如下警告:
   D:\Server\apache-tomcat-9.0.73-windows-x64\apache-tomcat-9.0.73\bin\catalina.bat stop
Using CATALINA_BASE: “C:\Users\Abc\AppData\Local\JetBrains\IntelliJIdea2023.3\tomcat\be4e23eb-1dde-42b0-9e52-853b5050e770”
Using CATALINA_HOME: “D:\Server\apache-tomcat-9.0.73-windows-x64\apache-tomcat-9.0.73”
Using CATALINA_TMPDIR: “D:\Server\apache-tomcat-9.0.73-windows-x64\apache-tomcat-9.0.73\temp”
Using JRE_HOME: “D:\programfiles\BaseTools\Java\jdk-1.8”
Using CLASSPATH: “D:\Server\apache-tomcat-9.0.73-windows-x64\apache-tomcat-9.0.73\bin\bootstrap.jar;D:\Server\apache-tomcat-9.0.73-windows-x64\apache-tomcat-9.0.73\bin\tomcat-juli.jar”
Using CATALINA_OPTS: “”
14-Mar-2024 08:32:34.599 信息 [main] org.apache.catalina.core.StandardServer.await 通过关闭端口接收到有效的关闭下令。正在停止服务器实例。
14-Mar-2024 08:32:34.600 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler[“http-nio-8080”]
14-Mar-2024 08:32:34.686 信息 [main] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
14-Mar-2024 08:32:34.694 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用步伐 [ROOT] 注册了JDBC驱动步伐 [com.alibaba.druid.proxy.DruidDriver],但在Web应用步伐停止时无法注销它。 为防止内存走漏,JDBC驱动步伐已被逼迫取消注册。
14-Mar-2024 08:32:34.695 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用步伐 [ROOT] 注册了JDBC驱动步伐 [com.mysql.cj.jdbc.Driver],但在Web应用步伐停止时无法注销它。 为防止内存走漏,JDBC驱动步伐已被逼迫取消注册。
14-Mar-2024 08:32:34.695 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用步伐[ROOT]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存走漏。线程的堆栈跟踪:[
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:91)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)]
INFO 03-14 08:32:34, 689 {dataSource-1} closing … (DruidDataSource.java:2071)
INFO 03-14 08:32:34, 691 {dataSource-1} closed (DruidDataSource.java:2144)
14-Mar-2024 08:32:34.705 信息 [main] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler [“http-nio-8080”]
14-Mar-2024 08:32:34.715 信息 [main] org.apache.coyote.AbstractProtocol.destroy 正在摧毁协议处置惩罚器 [“http-nio-8080”]
Disconnected from server
  上面问题的重点是:
   Web应用步伐 [ROOT] 注册了JDBC驱动步伐 [com.alibaba.druid.proxy.DruidDriver],但在Web应用步伐停止时无法注销它。 为防止内存走漏,JDBC驱动步伐已被逼迫取消注册。
14-Mar-2024 08:32:34.695 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用步伐 [ROOT] 注册了JDBC驱动步伐 [com.mysql.cj.jdbc.Driver],但在Web应用步伐停止时无法注销它。 为防止内存走漏,JDBC驱动步伐已被逼迫取消注册。
14-Mar-2024 08:32:34.695 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用步伐[ROOT]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存走漏
  2 办理

2.1 办理方法

从网上看了大量的该问题的办理方案,有许多是行不通的。比方博文办理SSM项目关闭Tomcat9时出现Web应用步伐注册了JDBC驱动步伐,但在Web应用步伐停止时无法注销销它。 为防止内存走漏,JDBC驱动步伐已被逼迫取消注册的问题给出的方案,但是在我的情况下,找不到类com.mysql.cj.jdbc.AbandonedConnectionCleanupThread。
另有的说是Tomcat的版本问题,需要改为低版本;stackoverflow也给出了一些办理方案,但场景也不能适用。
最后,找到一篇博文Tomcat停止时为了防止内存走漏,JDBC驱动步伐被逼迫取消注册出现缘故原由,我采用了其中方法2办理了该问题。
具体说,该办理方法步调如下:
1 打开项目的Project Structure,按下图设置一下:

上图中,需要右击4,才气出现5。
2.2 验证是否办理

我反复启动服务、关闭服务,都没有发现问题。截图如下:

可以看出,已不再出现前述的警告信息了。
3 结语

真正的缘故原由我照旧不知道,stackoverflow虽有人给出了问题的缘故原由,但我照旧没理解透。稀里糊涂的把问题办理了,记载一下。
之前在带GPU的电脑上安装了多次Tensorflow 2.x,安装过程非常繁琐,但都没有像本问题那样令人狐疑。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表