&引用;已超出系统资源“;在通过Java jdbc odbc访问文件的连接过程中

&引用;已超出系统资源“;在通过Java jdbc odbc访问文件的连接过程中,java,ms-access,jdbc,resources,odbc,Java,Ms Access,Jdbc,Resources,Odbc,我已经阅读了所有“超出系统资源”的帖子,但这与它们完全不同。 我花了3个小时寻找解决方案。 我没有太多的连接/语句/结果集,我总是关闭所有这些连接/语句/结果集。 我的代码过去可以正常工作,但现在我得到了“超出系统资源”异常,不是在查询期间,而是在尝试连接时。 我没有改变我的代码中的任何东西,但是现在它不起作用,除了我10次尝试中的1次。我试图改变其中的一些东西,但没有什么不同。 我的访问文件是15-50MB。 我的代码是: private String accessFilePath; priv

我已经阅读了所有“超出系统资源”的帖子,但这与它们完全不同。 我花了3个小时寻找解决方案。 我没有太多的连接/语句/结果集,我总是关闭所有这些连接/语句/结果集。 我的代码过去可以正常工作,但现在我得到了“超出系统资源”异常,不是在查询期间,而是在尝试连接时。 我没有改变我的代码中的任何东西,但是现在它不起作用,除了我10次尝试中的1次。我试图改变其中的一些东西,但没有什么不同。 我的访问文件是15-50MB。 我的代码是:

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文件是否保持以前的连接打开?这里有什么问题吗?

好的,我找到了解决办法。 起初,我启动了一个新的java项目,并在那里复制了相同的代码行。 每次在新项目中尝试时,我都成功地连接到文件。 所以我很吃惊。我查看了我的虚拟机设置。 在我的原始程序中,我为虚拟机分配了太多的内存,因此即使只连接一个文件,也没有剩余内存

我的设置是-->虚拟机选项:-Xmx1536m-Xms768m(有点过多)

我将其更改为-->虚拟机选项:-Xmx512m-Xms256m

它成功了。谢谢你的评论。
我希望这对其他人有帮助,因为我花了很多时间才找到它。

您尝试过重新启动操作系统吗?可能是某些与连接相关的资源从未被释放,这可能是因为您的程序运行中断,并且从未关闭它们的连接。我已经尝试过重新启动。这是我的第一个想法。我发现非常奇怪的是,在重新启动后,我在第一次连接尝试时出现异常。太疯狂了。。。我对各种访问文件也有同样的例外哇,真奇怪。下一步要尝试的是:您可以使用ADO从C#或VB访问这些文件吗?