Eclipse中的资源泄漏问题?
我做了一些测试(使用Windows7、EclipseJuno4.2.1和Java7SE),发现如果一个方法没有在catch块中显式返回,并且如果该对象在try/catch之外声明,则不会发出“资源泄漏”警告 不会生成“资源泄漏”: 代码中的微小更改会产生“资源泄漏”:Eclipse中的资源泄漏问题?,eclipse,java-7,resource-leak,Eclipse,Java 7,Resource Leak,我做了一些测试(使用Windows7、EclipseJuno4.2.1和Java7SE),发现如果一个方法没有在catch块中显式返回,并且如果该对象在try/catch之外声明,则不会发出“资源泄漏”警告 不会生成“资源泄漏”: 代码中的微小更改会产生“资源泄漏”: 所有的方法在功能上似乎都是相同的——那么解释是什么呢?如果这是一个bug,这是Eclipse还是Java问题?经过一些研究,我得出结论,这是一个Eclipse bug。我在Eclipse下载站点(开普勒M3)上找到的最新版本中对其
所有的方法在功能上似乎都是相同的——那么解释是什么呢?如果这是一个bug,这是Eclipse还是Java问题?经过一些研究,我得出结论,这是一个Eclipse bug。我在Eclipse下载站点(开普勒M3)上找到的最新版本中对其进行了测试,但问题仍然存在。我还发现,在Eclipse项目的过去30天中,有5-6个关于类似问题的bug报告。在研究过程中,我还发现了另一种奇特的行为:
public void makeConnection() throws SQLException {
Connection connection = null;
try {
connection = DriverManager.getConnection("localhost");
for (int i = 0; i < 1; i++)
if (i < 1)
throw new SQLException("Foo");
connection.commit();
} finally {
close(connection);
}
}
public void close(Connection c) {
}
public void makeConnection()引发SQLException{
连接=空;
试一试{
connection=DriverManager.getConnection(“localhost”);
对于(int i=0;i<1;i++)
if(i<1)
抛出新的SQLException(“Foo”);
commit();
}最后{
关闭(连接);
}
}
公共空间关闭(连接c){
}
此代码将生成资源泄漏警告。但是,通过移除其中一个
- 呼叫关闭(连接)
- for循环
public void locISImReturnHasWarning() {
try {
InputStream is = new FileInputStream("A");
is.available();
} catch (IOException e) {
}
}
public void extISExReturnHasWarning() {
InputStream is = null;
try {
is = new FileInputStream("A");
is.available();
} catch (IOException e) {
return;
}
}
public void makeConnection() throws SQLException {
Connection connection = null;
try {
connection = DriverManager.getConnection("localhost");
for (int i = 0; i < 1; i++)
if (i < 1)
throw new SQLException("Foo");
connection.commit();
} finally {
close(connection);
}
}
public void close(Connection c) {
}