内存泄漏(?)后,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 );