我在 sqlite 中注意到了这种行为。当我重新使用游标对象时,任务管理器中的工作集内存不断增加,直到我的程序抛出内存不足异常。
我重构了代码,这样每次查询时,我都会打开与 sqlite 文件的连接,查询我想要的内容,然后关闭连接。
后者不知何故似乎并不那么需要内存。它不会增加超过某个点。
我对我的 sqlite 数据库所做的只是针对一个表进行简单的选择(其中包含两个聚合)。
这是我们可以以某种方式控制的行为吗?我想重用我的游标对象,但不希望内存被吃掉......
我在 sqlite 中注意到了这种行为。当我重新使用游标对象时,任务管理器中的工作集内存不断增加,直到我的程序抛出内存不足异常。
我重构了代码,这样每次查询时,我都会打开与 sqlite 文件的连接,查询我想要的内容,然后关闭连接。
后者不知何故似乎并不那么需要内存。它不会增加超过某个点。
我对我的 sqlite 数据库所做的只是针对一个表进行简单的选择(其中包含两个聚合)。
这是我们可以以某种方式控制的行为吗?我想重用我的游标对象,但不希望内存被吃掉......
默认情况下,缓存大小相当大(~2MB),即每个连接。您可以使用 SQL 语句将其设置得更小:
PRAGMA cache_size=-KB
使用负的 '-' KB 值将其设置为以千字节为单位的大小,否则设置要使用的页数。
此外,如果使用多个连接,您可能希望使用共享缓存来节省内存: SQLITE: Shared Cache