SQLite - 删除TEMP表不释放已分配的内存

时间:2012-12-27 19:09:41

标签: sqlite temp-tables

我正在使用PRAGMA temp_store=2所以所有临时表都在内存中创建。我有一个包含1,000,000,000条记录的临时表。我的测试应用程序使用的内存增长到大约80 MB。如果我删除此表或删除表中的所有记录,那么我的应用程序仍然使用80 MB的内存。为什么没有sqlite free memory?

此致

1 个答案:

答案 0 :(得分:2)

以前由表使用的内存仍然是数据库的一部分,并且将被以后插入该数据库的任何数据重用。

要完全释放内存,您必须关闭数据库连接(如果要存储更多临时数据,请打开一个新连接)。

如果您希望数据库稍后重用数据,那么在此期间释放数据将是无用的开销,除非您的计算机极度缺乏内存。