测试 jdbc 中连接关闭的时机

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

 

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

 

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

 

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

 

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

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

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

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

posted @ 2018-09-17 20:13  Li【军】  阅读(593)  评论(0编辑  收藏  举报