【问题标题】:SQLite java memory usage increases until an outofmemory exceptionSQLite java 内存使用量增加,直到出现内存不足异常
【发布时间】:2010-02-02 23:27:13
【问题描述】:

我在 java 程序中使用 SQLite。当 java 程序运行时,会向数据库发送几个查询,并在内存中创建临时表,然后将其删除(使用 DROP)。

问题是在数据库中各种操作的数量增加的同时,java程序的内存使用量也增加了。结果,程序在某个时候崩溃并出现内存不足异常。 我使用 PRAGMA temp_store = 2 将临时表保存在内存中,但每次在构建另一个表之前我都删除了(使用 DROP 表名)。

这与数据库保存的日志有什么关系吗? 我该如何解决这个问题?

【问题讨论】:

    标签: java sqlite out-of-memory


    【解决方案1】:

    如果不查看您的程序,就不可能说出问题所在。您是否将针对数据库运行的查询结果保存在内存中?如果您的程序以这样一种方式编写,即您有多个大型 JDBC 结果集并且垃圾收集器无法确定天气,那么释放它们使用的内存是安全的,那么您很容易耗尽内存。

    【讨论】:

    • 是的,我将结果集保存在内存中以进行处理,但我认为垃圾收集器会在某个时候收集它。我使用过 Runtime.getRuntime().gc() 但在那里没有区别。如何明确摆脱结果集?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    相关资源
    最近更新 更多