关闭我的连接资源有什么问题吗?我似乎仍然在postgres运行中有空闲连接。
public void doSomething(){
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try{
con = getConnection();
ps = con.prepareStatement("sql here");
....
rs = ps.executeQuery();
...
} catch(Exceptions stuff){
} finally {
closeAll(con,ps,rs);
}
}
public void closeAll(Connection con, PreparedStatement ps, ResultSet rs){
try{
if(rs != null){
rs.close();
}
if(ps != null){
ps.close();
}
if(con != null){
con.close();
}
} catch(SQLException e){
....
}
}
答案 0 :(得分:1)
是的,他们关闭连接的方式是一个问题。
假设,关闭ResultSet对象时发生异常,其余的东西不会被关闭
其次,假设一切顺利,你仍然持有你没有使用的其他连接(等),这增加了JVM,数据库,内存管理器等的负担
建议在JAVA 7中使用带有“资源”功能的“try(){”,或者如果您使用JAVA 6,则在不再需要时关闭它们。