我在程序中某处出现内存泄漏,并使用一些工具认为这是代码中的位置。那么,此函数以及如何调用存储过程有什么问题吗?

创建该类时,将CustomSQLConn赋予该类。

private void flagDeleted(ABCDocument mydoc){
    try {

        ResultSet rs1 = null;
        try{
            CallableStatement cs1;
            cs1 = CustomSQLConn.prepareCall("{ call flagFolderDeleted(?) }");
            cs1.setInt(1, mydoc.getId());
            cs1.execute();
        }catch (Exception e){
            System.out.println("Got an exception: " + e.getMessage());
            e.printStackTrace();
        }finally{
            if(rs1 != null) rs1.close();
            rs1 = null;
        }
    }catch (Exception e) {
        System.out.println("Got an exception: " + e.getMessage());
        e.printStackTrace();
    }
} // END flagDeleted


由于该类将其用于其他进程,因此此处也未关闭该连接。

最佳答案

您正在关闭ResultSet,但没有关闭CallableStatement

关于java - 调用存储过程时出现内存泄漏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5245985/

10-15 15:27