最近正在開發一個應用,應用裏面使用SQLite 數據庫的地方比較多,一些下載的內容都進行了SQLite數據庫緩存,應用開發完成以後發現一個嚴重的問題,程序莫名其妙的崩潰,使用XCode的內存分析工具分析後發現,Controller已經徹底釋放了,可是打開Controller的時候升高的內存只釋放了三分之一,而後來回的打開Controller和關閉Controller之後發現每次都是同樣,如此反覆以後內存就溢出了。數據庫
這個問題太奇怪了,我很是確認 Controller中調用的全部對象的 Delegate 都置爲nil 了,全部建立對象都被置爲nil 了,可是內存仍是莫名其妙的沒法釋放,最後通過反覆調試發現SQLite數據庫在打開的時候很是消耗內存,只要是打開數據庫不關閉,內存就會保持在一個穩定的值,也就是說,在程序啓動的時候打開一次數據庫就能夠不用關閉了,這樣的話內存反而能長期保持在一個很是低的值,並且還有一個好處就是執行SQL的時候很是快(這個卻是能夠理解,每次執行SQL的時候不用打開和關閉數據庫了嘛)。緩存
本人以前是作過很長一段時間的服務端開發,從我接觸數據庫開始,全部教材都是告誡我,使用完數據庫以後必定要關閉,這樣的話能夠有效的釋放鏈接 和內存,可是坑爹的IOS竟然是變相的鼓勵不關閉數據庫,這個簡直就是顛覆了個人世界觀,讓我說什麼好呢?只能呵呵了,但願之後各位不會遇到相同的問題。工具