java.lang.OutOfMemoryError: пространство кучи Java - PullRequest
0 голосов
/ 10 июня 2010

Я получаю эту ошибку при вызове MySQL подготовленного оператора каждые 30 секунд, это код, который был вызван:

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 ]

7 голосов
/ 10 июня 2010

Вам необходимо закрыть все ресурсы, которые вы создаете - подготовленный оператор, набор результатов и т. Д.

1 голос
/ 10 июня 2010

Почему бы не сделать запрос параметризованным и просто изменить идентификатор соединения? Вот как подготовленные заявления были предназначены для использования. Таким образом, вы компилируете оператор только один раз и повторно используете скомпилированный план запроса (или любой другой компонент, в который ваша БД компилирует запрос).

0 голосов
/ 10 июня 2010

Поскольку у вас недостаточно памяти, поскольку ваш ResultSet занимает больше памяти по сравнению с памятью по умолчанию.

Решение: во время запуска приложения используйте этот аргумент java или javaw -Xms 25M -Xmx 1024M

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...