sqlite+fmdb Vacuum 命令后内存泄漏(?)
我通过 FMDB 包装器在我的应用程序中使用 sqlite。
在调用 VACUUM 之前,我的应用程序中的内存使用量为 2.25 MB:
[myFmdb executeUpdate: @"VACUUM;" ];
之后为 5.8 MB,而且我似乎无法回收内存。真空后,仪器/分配工具显示大量带有活动字节的 sqlite3MemMalloc 调用,每次分配 1.5 K。
如果不关闭数据库并重新打开它(一个选项),我该如何清理它?
编辑:关闭并重新打开数据库连接确实会清除内存。这是我的解决方案,除非有人可以对此提供进一步的见解。
I'm using sqlite in my app via the FMDB wrapper.
Memory usage in my app sits at 2.25 MB before a call to VACUUM:
[myFmdb executeUpdate: @"VACUUM;" ];
Afterwords its at 5.8 MB, and I can't seem to reclaim the memory. Post-vacuum, the Instruments/Allocations tool shows tons of sqlite3MemMalloc calls with live bytes, each allocating 1.5 K.
Short of closing the database and reopening it (an option), how can I clean this up?
Edit: closing and reopening the database connection does clear up the memory. This is my solution unless someone can shed some further insight to this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在 sqlite-users 列表上发布了这个问题,并得到了建议减少 sqlite 缓存大小的回复。这是通过执行以下语句(根据需要调整大小值)来完成的:
编辑:这是释放 SQLite 内存的另一个巧妙技巧。请务必#define SQLITE_ENABLE_MEMORY_MANAGEMENT。
此处记录:http://www.sqlite.org/c3ref/release_memory.html
I posted this question on the sqlite-users list and got a response that suggested reducing the cache size for sqlite. This is done by executing the following statement (adjusting the size value as desired):
EDIT: here's another nifty trick for releasing SQLite memory. Be sure to #define SQLITE_ENABLE_MEMORY_MANAGEMENT.
Documented here: http://www.sqlite.org/c3ref/release_memory.html