mysql Использование памяти (RAM) увеличивается при использовании ResultSet?

Я использую MySQL и Java для ВЫБРАТЬ около 50000 записей. Странно то, что когда я использую ResultSet и метод next () для чтения данных, я вижу, что использование ОЗУ моим java-приложением увеличивается во время выборки. он начинается с 255 МБ и увеличивается до 379 МБ! код, который я использую, находится здесь:

try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/#mysql50#crawler - used in report?" + "user=root&password=&useUnicode=true&characterEncoding=UTF-8");
    Statement st = conn.createStatement();
    ResultSet rsDBReader = st.executeQuery("SELECT Id, Content FROM DocsArchive");
    while (rsDBReader.next()) {
        int docId = rsDBReader.getInt(1);
        String content = rsDBReader.getString(2);
        . . .
        }
    rsDBReader.close();
    st.close();
    conn.close();
} catch (Exception e) {
    System.out.println("Exception in reading data: " + e);
}

Я уверен, что память используется для ResultSet, а не для других частей программы. В этой программе мне не нужно обновлять записи, поэтому я хочу удалить каждую запись после завершения работы. Я предполагаю, что прочитанные записи не будут удалены, и программа не освободит их память. поэтому я использовал некоторые приемы, чтобы избежать этого, например, используя следующий код:

Statement st = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);

st.setFetchSize(500);
rsDBReader.setFetchSize(500);

, но они ничего не меняли. : (

Итак, мне нужен какой-то метод, который удаляет (освобождает) память из прочитанных строк.

Еще один интересный момент заключается в том, что даже после завершения функции и закрытия ResultSet, Statement и Connection и перехода к другой части программы, но использование памяти программой не уменьшается! Спасибо

5
задан Soheil 4 August 2011 в 13:53
поделиться