"Системный ресурс превышен" во время подключения к файлу доступа через Java jdbc odbc
Я прочитал все сообщения "Системный ресурс превышен", но это не что-то похожее на них.
Я потратил последние 3 часа на поиск решения.
У меня не так много связей/утверждений/результатов, и я всегда закрываю их все.
Мой код работал, но теперь я получаю исключение "Системный ресурс превышен", а не во время запросов, но КОГДА Я ПЫТАЮСЬ ПОДКЛЮЧИТЬ.
Я не изменил ничего из своего кода, но в данный момент он не работает, за исключением 1 из 10 раз. Я попытался изменить некоторые вещи в нем, но никакой разницы.
Мои файлы доступа - 15 - 50 МБ.
Мой код:
private String accessFilePath;
private Connection myConnection;
public boolean connectToAccess(String myAccessFilePath) {
accessFilePath = myAccessFilePath;
//Get connection to database
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// set properties for unicode
Properties myProperties = new Properties();
myProperties.put("charSet", "windows-1253");
myConnection = DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + accessFilePath, myProperties); // I get the exception here
} catch (Exception ex) {
System.out.println("Failed to connect to " + accessFilePath + " database\n" + ex.getMessage());
return false;
}
return true;
}
Что теперь отличается от других? Открывать ли файлы доступа предыдущие подключения? Что здесь может быть неправильным?
Ответы
Ответ 1
ОК, я нашел решение.
Сначала я начал новый проект java и скопировал те же самые коды.
Я успешно подключался к своим файлам каждый раз, когда пробовал это в своем новом проекте.
Так это меня поразило. Я посмотрел на настройки виртуальной машины.
В моей оригинальной программе Я НАЗНАл СЛИШКОМ МНОГО ПАМЯТИ В ВИРТУАЛЬНОЙ МАШИНОЙ, поэтому не осталось памяти даже для одного подключения к файлам.
Мои настройки были → Опции VM: -Xmx1536m -Xms768m (немного чрезмерно)
Я изменил его на → Параметры VM: -Xmx512m -Xms256m
И это сработало. Спасибо за ваши Коментарии.
Надеюсь, это поможет другим людям, потому что я провожу много часов, чтобы найти его.