测试 jdbc 中连接关闭的时机

 使用 show processlist 查看所有数据库连接 

测试调用 conn.close 之后,连接的变化情况 

测试如果不写 conn.close 而是调用 System.gc() 之后,连接的变化情况 

测试如果不写 conn.close 而是让程序执行完或退出,连接的变化情况 

思考为什么必须要手动写 conn.close 语句释放资源

如果不手动释放资源,一两条访问还可以,如果是一百万或着更多的时候,gc是不会那么快速的回收资源的,所以会导致电脑卡死的现象

思考为什么要手动释放 resultset 和 statement

如果使用连接池,那么请注意,Connection关闭并不是物理关闭,只是归还连接池,所以PreparedStatement和ResultSet都被持有,并且实际占用相关的数据库的游标资源,在这种情况下,只要长期运行,往往就会报“游标超出数据库允许的最大值”的错误,导致程序无法正常访问数据库。

原文地址:https://www.cnblogs.com/ljj5/p/9664566.html