tomcat关闭时未防止内存泄漏,JDBC强制注销及线程未停止警告,附项目启动时初始化druid物理连接

本文介绍了在Tomcat关闭时如何预防内存泄漏,特别是针对JDBC连接,强调了强制注销和停止线程的重要性。同时,分享了在项目启动时如何初始化Druid物理连接的方法,以确保数据库连接的正确管理和释放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

08-Nov-2019 22:37:57.028 警告 [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
08-Nov-2019 22:37:57.029 警告 [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [Druid-ConnectionPool-Create-17551093] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2690)
Spring容器启动时初始化Druid连接池的过程通常涉及到以下几个步骤: 1. **配置文件**:首先,在Spring Boot应用的`application.properties`或`application.yml`等配置文件中,你需要设置Druid的相关属性,如数据源名称、驱动、URL、用户名、密码以及最大连接数等。 ```properties druid.datasource.url=jdbc:mysql://localhost:3306/mydb druid.datasource.username=root druid.datasource.password=yourpassword druid.initial-size=5 max-active=20 ``` 2. **依赖注入**:在Spring的XML配置或者注解配置中,通过`@Bean`或`<bean>`标签,创建一个`DruidDataSource` bean,并将其关联到Spring管理的数据源名上。例如: ```xml <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 配置信息... --> </bean> ``` 或者使用Java配置: ```java @Bean public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); // 配置信息... return dataSource; } ``` 3. **初始化方法**:`init-method`属性指定了DruidDataSource的初始化方法`init()`,它会在Spring容器启动时自动调用,完成数据库连接池的初始化工作。 4. **监控和日志**:Druid还提供了丰富的监控功能,可以查看其连接池的状态,包括连接数、空闲数等,这通常需要额外引入DruidWeb监控模块并配置访问路径。 当你启动Spring应用,Spring容器会按照配置顺序加载和初始化各个组件,包括Druid连接池。如果一切配置正确,那么在应用程序运行起来后,Druid连接池就已经准备就绪了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值