mat*_*att 5 java database jdbc ucanaccess
我将 JDBC 与 UCanAccess 一起使用,以便通过直接文件路径创建到 MS Access 文件的连接,以将特定表存储到 JSON 对象中。但是,我的代码行
conn = DriverManager.getConnection(s1+inFilePath, user, pass);
Run Code Online (Sandbox Code Playgroud)
其中 conn 是一个未初始化的 Connection 对象,创建连接会导致某种内存泄漏,最终导致超出 GC 开销限制。
有没有办法解决这个问题?我尝试更改堆大小但没有结果。
这不是内存泄漏。作为正常操作的一部分,UCanAccess 正在消耗内存。
UCanAccess 使用 Access 数据库的 HSQLDB“镜像”来支持 SQL 操作,并且默认情况下在内存中创建镜像数据库。因此,如果您连接到具有包含 30 MB 数据的表的 Access 数据库,则 UCanAccess 将使用约 30 MB 的内存来存储镜像数据库。
附加;memory=false
到连接 URL 将告诉 UCanAccess 在磁盘上而不是在内存中创建 HSQLDB 镜像数据库。这将显着减少内存需求,但建立连接(即创建镜像数据库)也会花费更长的时间。
UCanAccess 还“镜像”它在指定数据库中找到的所有表。因此,如果您只对使用名为“main.accdb”的数据库中的一个特定表感兴趣,那么您可以
使用上述过程,UCanAccess 仅镜像一张表。
还有其他几个选项可以控制 UCanAccess 的镜像行为;有关详细信息,请参阅UCanAccess 网站。
归档时间: |
|
查看次数: |
721 次 |
最近记录: |