Object-c SQLite 数据库内存溢出问题

最近正在开发一个应用,应用里面使用SQLite 数据库的地方比较多,一些下载的内容都进行了SQLite数据库缓存,应用开发完成以后发现一个严重的问题,程序莫名其妙的崩溃,使用XCode的内存分析工具分析后发现,Controller已经彻底释放了,可是打开Controller的时候升高的内存只释放了三分之一,而后来回的打开Controller和关闭Controller之后发现每次都是同样,如此反复以后内存就溢出了。数据库

 

这个问题太奇怪了,我很是确认  Controller中调用的全部对象的 Delegate 都置为nil 了,全部建立对象都被置为nil 了,可是内存仍是莫名其妙的没法释放,最后通过反复调试发现SQLite数据库在打开的时候很是消耗内存,只要是打开数据库不关闭,内存就会保持在一个稳定的值,也就是说,在程序启动的时候打开一次数据库就能够不用关闭了,这样的话内存反而能长期保持在一个很是低的值,并且还有一个好处就是执行SQL的时候很是快(这个却是能够理解,每次执行SQL的时候不用打开和关闭数据库了嘛)。缓存

 

本人以前是作过很长一段时间的服务端开发,从我接触数据库开始,全部教材都是告诫我,使用完数据库以后必定要关闭,这样的话能够有效的释放链接 和内存,可是坑爹的IOS竟然是变相的鼓励不关闭数据库,这个简直就是颠覆了个人世界观,让我说什么好呢?只能呵呵了,但愿之后各位不会遇到相同的问题。工具

相关文章
相关标签/搜索