ios - 关于APP 内存偏高出现闪退问题的研究,求大神解答!!!
伊谢尔伦
伊谢尔伦 2017-04-18 09:18:33
0
7
718

问题描述:app 出现内存偏高的问题,app 是一个展示图片居多的app,浏览多个图片list 页以后,内存最高峰值跑到了150m,然后app 出现了闪退;
问题:
① 怎么能够避免内存偏高的问题?
② 如果不能避免那么怎么降低内存偏高呢?
③ 如果上面两个问题都不能解决,那么出现内存偏高的时候怎么处理可以避免闪退呢?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(7)
阿神
  1. 請確保試用真機release模式進行測試

  2. 請確保記憶體沒有洩漏

左手右手慢动作

如樓上所說,首先檢查是不是有記憶體外洩。

1.造成閃退的原因是什麼?沒有看到 log 並不能確定就是記憶體高造成的。
2.瀏覽圖片的列表的話,可以使用 SDWebImage 之類的來緩存圖片,設定緩存使用內存的上限,加上表格重用,並不會使用到很多內存的。

Peter_Zhu

假如展示的圖片過多導致的內存升高,先看看圖片釋放了沒有。一般情況下是沒有及時的釋放掉圖片。

Ty80

如果在某次操作後內存突然偏高並且保持穩定或持續走高,基本可以確定是內存洩漏的原因。
在判斷記憶體外洩的時候,首先,應該確定程式碼的哪出位置出現了記憶體外洩問題;
第二,如果是圖片導致的原因,可能因為網路要求的圖片沒有設定本地快取;
第三,注意網路請求、資料庫操作、UIView類別及子類別的釋放。
最後,在XcodeProduct->Profile可以對專案進行調試,等待編譯完成後調出Instruments,使用其中的Leaks可以查看內存洩漏情況。

洪涛

比較常見的圖片優化,也有可能是原始資料中的圖片太大,導致記憶體上升。建議在list列表中使用縮圖。

迷茫

做一些合理的釋放操作,當用的時候在開闢空間。

左手右手慢动作

我覺得是那些滑出螢幕的cell上的圖片沒有釋放掉,一般來說,滑出螢幕的cell會被釋放-->cell裡面的內容釋放-->UIImageView釋放-->然後UIImage釋放,檢查這個釋放鏈中是否有某個環節沒有釋放。比較可能的是你的UIImage物件還有其他的地方引用了,例如NSArray裡存入了,例如在NSCache。釋放就是不要有任何的強引用保存這個物件了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板