Spring 引导 - 内存泄漏 - H2 数据库 - 不注销驱动程序

Spring Boot - Memory Leak - H2 Database - Does not unregister driver

根据新信息完全修改:

所以它只在 tomcat 中工作,因为它足够聪明,可以注意到内存泄漏并阻止它。 JBoss不做,遇到麻烦...

看起来标准的 spring 带 H2 的启动应用程序在处理注销 H2 驱动程序方面行为不端......至少这是我的收获。

我还找到了这个:GitHub - Spring Boot - Discussion about unregister managed JDBC drivers

现在我不确定,谁在“过错”?

  1. 我是因为我需要注意正确注销 H2 驱动程序
  2. 我是因为我错误配置了 Spring 启动应用程序
  3. 用于保持内部状态的 H2 驱动程序?
  4. Spring 开机中继 Tomcat 整理

非常感谢

又是一个与 MAT 和 OOM 相关的周末,我现在修复了内存泄漏问题。

首先,我现在在 ContextListener 中手动取消注册从 Spring 启动启动的 JDBC 驱动程序(从 2.3.0 Spring 启动将自动取消注册 -> https://github.com/spring-projects/spring-boot/issues/21221) . 这解决了第一个内存泄漏问题。

另一个来自io.github.classgraph。 destroy 是作为应用程序关闭挂钩添加的,它仅在 JVM 关闭时执行。 -> 对于永远 运行 的应用程序服务器来说不是一个好主意。他们修复了它,但是 springdoc-openapi-ui / org.webjars:webjars-locator-core 仍在使用带有错误的旧版本。所以我手动增加了类图版本。 这解决了第二次内存泄漏......该死的我从来不想知道这么多关于这些东西的东西(否则我会在 C 中编程:D)

问题已解决:)