因为新信息,进行了全面的改写:
初始问题:当多次重新部署简单的Spring Boot应用程序(2.2.6)时,JBoss会出现"OutOfMemoryError: Metaspace"错误。
之后我检查了为什么Tomcat不像这样行事,发现
The web application [killerApp] registered the JDBC driver [org.h2.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
所以在Tomcat中它只是正常工作,因为它足够聪明地注意到内存泄漏并防止它。JBoss没有这样做,结果遇到了麻烦...
看起来这个标准的Spring Boot应用程序与H2在注销H2驱动程序方面的处理方式有问题...至少这是我的理解。
我另外找到了这个:GitHub - Spring Boot - 有关注销托管JDBC驱动程序的讨论
现在我不确定谁是 "有错" 的人?
- 是我,因为我需要正确注销H2驱动程序
- 是我,因为我配置Spring Boot应用程序时出了问题
- H2驱动程序保持内部状态?
- Spring Boot依赖Tomcat整理
最好的情况和非常感谢