我在 java 程序中使用 SQLite。当java程序运行时,多个查询被发送到数据库,并且临时表在内存中创建然后被删除(使用DROP)。
问题在于,当数据库中的各种操作数量增加时,java程序的内存使用量也会增加。结果,程序在某个时候崩溃并出现内存不足异常。 我使用 PRAGMA temp_store = 2 将临时表保留在内存中,但每次在构建另一个临时表之前我都会删除(使用 DROP 表名)。
这与数据库保存的日志有什么关系吗? 我该如何解决这个问题?
最佳答案
如果不查看你的程序,就不可能说出问题是什么。您是否将针对数据库运行的查询结果保留在内存中?如果您的程序是以这样的方式编写的,即您有多个大型 JDBC 结果集,并且垃圾收集器无法确定天气,那么可以安全地释放它们使用的内存,您很容易就会耗尽内存。
关于java - SQLite java 内存使用量不断增加,直到出现内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185070/