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