QML for IOS——一個奇怪的內存泄漏問題

bug知悉

  • 在開發一款IPad程序時,遇到了一個匪夷所思的問題,最終也雖然解決了貌似,但是還是沒找到問題原因,在此記錄一下。
  • xcode的Memory Report中,觀測到app的內存始終以緩慢卻堅定的步伐增加着,但是在使用Leaks工具監測後,並沒有查到內存泄漏,由於自己對xcode和ios開發並不熟練,只能通過笨辦法一點點的排查代碼。

開發環境

  • Qt 5.12.7 + mac
  • iPad air3

問題排查

  1. 原程序是c++與QML混合編程的,排查掉所有線程,socket,動態對象生成等可能會出問題的代碼後,發現問題疑似出在QML的動畫效果,定時器身上。
  2. 使用QML profiler進行調試,沒有監測到內存無故增加。
  3. Memory Report和Leaks監測,始終緩慢增加。
  4. 單獨寫了測試demo,發現qml中帶有循環概念屬性的控件都觸發了這個問題(動畫設置循環,定時器設置循環觸發事件,BusyIndicator running:true)。下圖是一個簡單的循環旋轉動畫的demo運行狀態,並且在內存達到極限時程序確實崩潰了。
    在這裏插入圖片描述
  5. 在Windows上測試沒有發現類似問題。

問題解決

  • 試了很多方法也沒有解決這個問題,最後聽說qt 發佈了5.x最後一個版本5.15,試了一下,Surprise ,這個問題就這麼解決了。可惜沒搞清楚具體的問題。上一下相同demo,5.15的表現:
    在這裏插入圖片描述
  • 不知道其他控件會不會有問題,順便期待下6.x。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章