通过Java jdbc odbc连接到Access文件时"超出系统资源"

Ste*_*gas 11 java resources ms-access odbc jdbc

我已经阅读了所有"超出系统资源"的帖子,但这与他们完全不同.我花了最近3个小时寻找解决方案.我没有很多连接/语句/结果集,我总是关闭它们.我的代码曾经工作,但现在我得到了"超出系统资源"的异常,不是在查询期间,而是在我尝试连接的时候.我没有改变我的代码,但它现在不起作用,除了我尝试它的10次中有1次.我试图改变其中的一些东西,但没有区别.我的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;
}
Run Code Online (Sandbox Code Playgroud)

现在和其他时间有什么不同?Access文件是否保持以前的连接打开?这可能有什么不对?

Ste*_*gas 6

好的,我找到了解决方案.起初我开始了一个新的java项目并在那里复制了相同的代码行.每次我在新项目中尝试连接时,我都成功连接到我的文件.所以它让我感到震惊.我查看了我的VM设置.在我的原始程序中,我将很多内存分配给虚拟机,因此即使单个文件连接也没有内存.

我的设置是 - > VM选项:-Xmx1536m -Xms768m(有点过分)

我将其更改为 - > VM选项:-Xmx512m -Xms256m

它奏效了.谢谢您的意见.我希望这有助于其他人,因为我花了很多时间才找到它.