Object-c SQLite 資料庫記憶體溢出問題,object-csqlite

來源:互聯網
上載者:User

Object-c SQLite 資料庫記憶體溢出問題,object-csqlite

最近正在開發一個應用,應用裡面使用SQLite 資料庫的地方比較多,一些下載的內容都進行了SQLite資料庫緩衝,應用開發完成之後發現一個嚴重的問題,程式莫名其妙的崩潰,使用XCode的記憶體分析工具分析後發現,Controller已經完全釋放了,但是開啟Controller的時候升高的記憶體只釋放了三分之一,然後來回的開啟Controller和關閉Controller以後發現每次都是一樣,如此反覆之後記憶體就溢出了。

 

這個問題太奇怪了,我非常確認  Controller中調用的所有對象的 Delegate 都置為nil 了,所有建立對象都被置為nil 了,但是記憶體還是莫名其妙的無法釋放,最後經過反覆調試發現SQLite資料庫在開啟的時候非常消耗記憶體,只要是開啟資料庫不關閉,記憶體就會保持在一個穩定的值,也就是說,在程式啟動的時候開啟一次資料庫就可以不用關閉了,這樣的話記憶體反而能長期保持在一個非常低的值,而且還有一個好處就是執行SQL的時候非常快(這個倒是可以理解,每次執行SQL的時候不用開啟和關閉資料庫了嘛)。

 

本人之前是做過很長一段時間的服務端開發,從我接觸資料庫開始,所有教材都是告誡我,使用完資料庫之後一定要關閉,這樣的話可以有效釋放串連 和記憶體,但是坑爹的IOS居然是變相的鼓勵不關閉資料庫,這個簡直就是顛覆了我的世界觀,讓我說什麼好呢?只能呵呵了,希望以後各位不會遇到相同的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.