我已经阅读了所有“超出系统资源”的帖子,但这与他们完全不同。 我花了最近3个小时寻找解决方案。 我没有很多连接/语句/结果集,我总是关闭它们。 我的代码曾经工作但现在我得到了“超出系统资源”的异常,而不是在查询期间,但 当我尝试连接 时。 我没有改变我的代码,但它现在不起作用,除了我尝试它的10次中有10次。我试图改变其中的一些东西,但没有区别。 我的Access文件是15 - 50 MB。 我的代码是:
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;
}
现在与其他时间有什么不同? Access文件是否保持以前的连接打开?这可能有什么问题?
答案 0 :(得分:6)
好的,我找到了解决方案。 起初我开始了一个新的java项目并在那里复制了相同的代码行。 每次我在新项目中尝试连接时,我都成功连接到我的文件。 所以它让我感到震惊。我查看了我的VM设置。 在我的原始程序 我将很多内存分配给虚拟机 ,因此即使单个文件连接也没有内存。
我的设置是 - > VM选项:-Xmx1536m -Xms768m(有点过分)
我将其更改为 - > VM选项:-Xmx512m -Xms256m
它有效。谢谢您的意见。 我希望这有助于其他人,因为我花了很多时间才找到它。