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