在iphone中使用sqlite数据库时的内存管理

los*_*sit 3 sqlite iphone

我的应用程序使用SQLite数据库来存储用户的输入.输入中的记录数将大约为100条记录,我在应用程序中进行了大量的SQL操作.

当我使用Object Allocations运行应用程序时,它会显示sqlite库libsqlite3.0.dylib占用大量内存.libsqlite框架会导致内存泄漏吗?与数据库通信的最佳方式是什么?进行大量的SQL调用会增加我的应用程序的内存使用量.

有人可以让我知道在应用程序中有效使用sqlite的最佳方法.(我使用SQLiteBooks示例作为参考)

谢谢.

Ste*_*lot 8

Sqlite为请求使用缓存.关闭并重新打开数据库,以释放缓存.

除非你的记忆要求很高,否则你不应该在乎.

您可以在UIApplicationDelegate方法applicationDidReceiveMemoryWarningUIViewController委托方法didReceiveMemoryWarning中捕获关键条件

如果调用其中一个方法,请关闭并重新打开数据库.


Ste*_*ton 5

我没有看到由sqlite引起的任何内存泄漏.它确实使用了一块合理的内存,但想想你需要编写多少代码以及需要缓存的数据来做同样的事情......

最好的建议是使用高效的SQL并尽快重置语句句柄.完成准备好的陈述也可能有所帮助,尽管我没有发现需要这样做.

人们经常建议定期关闭并重新打开数据库.虽然这不会伤害我自己也没有看到任何实际的好处.

最后,在sqlite网站上,您将看到有关管理内存功能的讨论.这些声音非常诱人,直到您意识到它们是可选的并且未在iPhone上的默认构建中启用.