内存泄漏(?)后,sqlite + fmdb真空命令

我通过FMDB封装在我的应用程序中使用sqlite。

调用VACUUM之前,我的应用中的内存使用量为2.25 MB:

[myFmdb executeUpdate: @"VACUUM;" ]; 

后缀在5.8 MB,我似乎无法回收内存。 后真空,仪器/分配工具显示吨活字节sqlite3MemMalloc调用,每个分配1.5 K.

closures数据库并重新打开(一个选项),我怎么能清理这个呢?

编辑 :closures并重新打开数据库连接清除内存。 这是我的解决scheme,除非有人可以进一步了解这一点。

我在sqlite-users列表上发布了这个问题,并得到了一个响应,build议减小sqlite的caching大小。 这是通过执行以下语句(根据需要resize值)来完成的:

 pragma cache_size = 100 

编辑:这是另一个释放SQLite内存漂亮的技巧。 一定要#define SQLITE_ENABLE_MEMORY_MANAGEMENT。

logging在这里: http : //www.sqlite.org/c3ref/release_memory.html

 int bytesReleased = sqlite3_release_memory( 0x7fffffff ); NSLog( @"sqlite freed %d bytes", bytesReleased );