PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = getConnection().prepareStatement(sql);
if (ps != null) {
ps = doSomething(ps);
ps.executeUpdate();
}
} finally {
if (ps!=null) {
ps.close();
}
}
private PreparedStatement doSomething(PreparedStatement ps) {
ps.setString(1, "test");
}
"执行更新只调用一次"。字符串" sql"在不同条件下是不同的并且将具有不同数量的绑定变量,方法doSomething在子类中具有用于设置绑定变量的不同实现。
Eclipse因为重新分配准备好的语句而抱怨这是一个潜在的泄漏。这里有资源泄漏吗?
答案 0 :(得分:-1)
在行中:
ps = doSomething(ps);
ps
的原始值可能会被删除,具体取决于它是否由doSomething
保留。
无论如何,Java将所有内容都保存在垃圾收集器下,因此没有任何内容泄漏"内存泄漏"。称之为丢失或丢失。