java.lang.OutOfMemoryError:Java堆空间

时间:2010-06-10 08:39:34

标签: java jdbc

我每隔30秒调用一次mysql Prepared语句就会出现此错误,这是被调用的代码:

public static int getUserConnectedatId(Connection conn, int i) throws SQLException {
    pstmt = conn.prepareStatement("SELECT UserId from connection where ConnectionId ='" + i + "'");
    ResultSet rs = pstmt.executeQuery();
    int id = -1;
    if (rs.next()) {
        id = rs.getInt(1);
    }
    pstmt = null;
    rs = null;
    return id;
}

不确定问题是什么:s

3 个答案:

答案 0 :(得分:7)

您需要关闭您创建的所有资源 - 预准备语句,结果集等。

答案 1 :(得分:1)

为什么不对查询进行参数化,只需更改连接ID?这就是准备使用的准备语句。这样,您只需编译一次语句,并重新使用已编译的查询计划(或您的数据库编译查询的任何内容)。

答案 2 :(得分:-2)

因为你的内存不足,因为与默认内存相比,ResultSet占用的内存更多。

解决方案:在启动应用程序时使用此参数 java或javaw -Xms 25M -Xmx 1024M