精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Facebook如何降低應用中的FOOMs

移動開發
當我們繼續解決崩潰問題時,我們觀察到需要解決的崩潰比例正在下降,但是我們注意到 App Store 指出社區繼續出現令人失望的應用崩潰。我們深入研究了用戶報告,并且從理論上說明內存不足(out-of-memory events (OOMs))可能正在發生。

在 Facebook,我們一直致力于讓應用穩定、快速、可靠。在 Facebook 的 iOS 應用上,我們已經做了很多工作去減少應用的崩潰率以及全面提高應用的穩定性。此前,大多數的崩潰都是由于常規性錯誤,一般都會伴隨著相應代碼行的棧回溯信息,并且提供了可能導致問題所在的提示信息。

當我們繼續解決崩潰問題時,我們觀察到需要解決的崩潰比例正在下降,但是我們注意到 App Store 指出社區繼續出現令人失望的應用崩潰。我們深入研究了用戶報告,并且從理論上說明內存不足(out-of-memory events (OOMs))可能正在發生。OOMs 一般發生在系統運行在低內存的環境下,OS 為了回收內存而終止應用。它既可能發生在前臺,也可以是后臺。我們在內部稱之為 FOOMs 和 BOOMs — 當我們說應用爆炸(BOOM)了,好像很好玩的樣子。

從用戶的角度來看,一個前臺內存不足導致的崩潰和常規的崩潰是不好分辨的。一般分為幾種情況,應用異常終止,似乎消失,以及用戶返回設備主屏幕。如果內存的消耗速度急速增長,那么應用會在不接到任何通知的情況下被終止掉。在 iOS 中,OS 會將內存警告發給應用,但是不能保證 OS 一定會在終止應用之前給應用發送警告信息。這就導致我們無法輕易地知道應用是否是由于內存壓力而被 OS 終止。

 

分析問題

為了掌握應用由于 OOM 崩潰而終止的頻率,我們從所有已知的途徑列舉應用可能終止的情況并記錄他們。這樣問題就轉變為“導致應用重啟的是什么?”

應用需要重啟的原因如下:

應用已經更新

應用退出或終止

應用崩潰

用戶強制退出應用

設備重啟(包括 OS 升級)

應用在前臺或者后臺內存不足(OOM)

通過排除處理,尋找區別于其他重啟原因的實例,借此我們可以找出 OOM 發生的時間。此外,我們還追蹤應用進入后臺和前臺的時間,借此我們可以精確地把 OOMs 分為 BOOMs 和 FOOMs。

 

日志顯示在設備處于低內存狀態下,OOMs發生的比率很高 。當應用進程在受內存限制的設備上像驅逐一樣被終止,真的非常令人沮喪。查看相關的日志記錄幫助我們驗證排除法的效果,并且能繼續提高日志記錄(我們無法準確驗證所有的事例,例如應用升級)。

我們最初在減少 OOMs 所做的努力,是試圖在應用不再需要內存時,就盡可能快地主動縮小應用的內存占用。不幸的是,我們沒有發現 OOM 崩潰的數量沒有有切實的改變,所以我們把關注點轉移到大的內存分配上,開始觀察那些可能被泄露的內存(沒有清理干凈的),尤其是潛在的循環引用。

內存使用分析

當我們開始解決內存泄露問題時,我們看到 OOM 崩潰率有所降低,但是依然沒有達到我們預期。緊接著,我們深入研究 Apple 的 Instruments 應用的 memory profiler,并且注意到只要應用打開任何 web 網頁,一個重復樣式的 UIWebView 就會分配大量的內存。我們還發現內存經常沒有回收,即使在用戶離開了網頁并且 web 視圖被關閉的情況下。

我們試圖做過大量的優化,例如清理緩存和內容,但是應用進程的內存占用在跳轉向 web 視圖時總是顯著增長。iOS包含一個新的類 — WKWebView — 它把大多數的工作都放在了分開的進程里,這意味著大多數跟內存相關的 web 視圖使用將不會分配給我們的進程。在低內存的事件中,web 視圖的進程將會被終止,但是我們的應用有很大可能會繼續存活下去。在我們把應用遷移為 WKWebView 后,我們確切地看到 OOMs 發生的比率有了顯著的降低。Yay!

內存分配比率

當通過 Instruments 分析內存使用時,我們還發現應用中分配了大量的臨時內存(~30 MB),然后馬上釋放掉。如果 CPU 在這個分配過程中是空閑的,那么 OS 會終止程序。我們要禁止此類臨時分配,這可以幫助我們在 30% 確定場景中減少 OOM 崩潰,我們還實驗并發現,相較于重復分配和釋放內存,分配一次然后管理內存對于應用的可靠性是更好的。

阻止內存惡化

即使用了 WKWebView,我們仍然發現一點點內存泄露都能夠顯著地導致影響 OOM 的發生比率。在我們通常的發布計劃和貢獻給應用的許多的團隊中,在發布的應用中捕獲和阻止內存泄露是非常重要的。我們改變了掃描設備,***性地設計了用于測試移動性能,為了記錄大量進程中的常駐內存,允許掃描設備去標記惡化情況,只要它們被添加了。這已經幫助我們把 OOM 發生比率保持在比最初解決問題時低得多的水平上。

應用內部的內存分析器

上一個在這個項目中我們使用的關鍵技術是去構造一個應用內部的內存分析器,通過追蹤所有的 Objective-C 對象的內存分配進而快速分析應用。我們把這個配置在掃描儀上,然后在里面建立我們的應用。

它是如何工作的:對于系統中的每一個類,維護一個當前活動的實例的數量。我們可以在任何點要求它打印出每一個類對象的現存數目。然后我們就可以分析這些數據任何異常的 release-to-release 用以辨認我們應用中總體上的內存分配模式,如果計數急劇變化,這一般可以驗證為內存泄露。我們準備去用一種性能足夠用并且不會產生對用戶有影響的方法去實現。

下面簡要說明我們的策略以及我們是如何追蹤 NSObject 的內存分配。

我們一開始創建一個內存分配追蹤類。這是個超級直接和簡單的類,有統計實例數量的公共方法用于統計實例數量的增加和減少。我們使用 C++ 而不是Objective-C,是由于那樣可以最小化追蹤器的內存分配和 CPU 占有率。

  1. class AllocationTracker { 
  2. static AllocationTracker* tracker(); 
  3.  
  4. void incrementInstanceCountForClass(Class aCls); 
  5. void decrementInstanceCountForClass(Class aCls); 
  6.  
  7. std::vector countsSnapshot(); 
  8. ... 

然后我們可以使用 iOS 的方法調配技術(稱為“swizzling”,使用runtime 的class_replaceMethod方法),用-fb_originalAlloc 和 -fb_originalDealloc方法去替換標準的iOS方法 +alloc 和+dealloc。

然后我們用新實現的增加和減少的分配和釋放實例數量的方法相應地替代+alloc 和 +dealloc。

  1. @implementation NSObject (AllocationTracker) 
  2.  
  3. + (id)fb_newAlloc 
  4. id object = [self fb_originalAlloc]; 
  5. AllocationTracker::tracker()->incrementInstanceCountForClass([object class]); 
  6. return object; 
  7.  
  8. - (void)fb_newDealloc 
  9. AllocationTracker::tracker()->decrementInstanceCountForClass([object class]); 
  10. [self fb_originalDealloc]; 
  11.  
  12. @end 

然后,當應用運行時,我們可以調用快照方法有規律地打印當前存活實例的數量。

應用可靠性

一旦我們在 Facebook 的 iOS 應用中實施更改去解決內存問題,我們會看到 (F)OOMs 和用戶的應用崩潰報告有顯著的降低。OOM 崩潰對于我們來說是盲點,因為沒有正式的體系或者 API 可以隨意檢測到它們。沒有人喜歡一個應用突然關閉。但是使用某些工具,或者***的 iOS 技術,以及一些靈巧的方法去解決這個問題,能夠讓我們的應用更加可靠,并且保證你不會在打開 web 視圖查看一篇有趣的文章(就像你在看的這篇文章)時突然關閉。

Additional thanks to Linji Yang, Anoop Chaurasiya, Flynn Heiss, Parthiv Patel, Justin Pasqualini, Cloud Xu, Gautham Badrinathan, Ari Grant, and many others for helping reduce the FOOM rate.

責任編輯:chenqingxiang 來源: Facebook的博客
相關推薦

2023-06-08 18:59:49

2021-01-06 10:18:33

網絡風險數據泄露漏洞

2012-05-10 17:18:42

Facebook應用中心

2020-10-27 18:45:45

GolangGraphQ開發

2012-03-19 20:57:06

2021-01-22 08:10:21

架構應用云網絡

2011-09-01 10:59:49

Foodily菜譜

2013-07-23 09:02:48

Facebook Ho應用設計

2009-09-09 09:59:47

全面預算管理博科資訊

2011-01-19 10:13:20

FaceBook代碼業界

2016-01-05 10:17:32

2012-07-03 11:38:32

FacebookHadoop

2012-08-30 09:32:12

FacebookiOS

2017-03-18 23:19:49

2012-05-15 09:42:06

2021-09-20 11:36:15

B端UX設計師中斷

2010-09-26 09:57:41

2011-09-13 11:29:58

2024-03-06 16:36:42

2020-03-02 15:15:37

程序員工資協議
點贊
收藏

51CTO技術棧公眾號

免费观看的毛片| 九九热精品在线观看| 国产精品原创视频| 亚洲欧洲综合另类| 国产精品视频500部| 特级西西444www大精品视频免费看| 欧美日韩国产在线观看网站| 欧美一区二区三区四区高清| 亚洲 高清 成人 动漫| aaa在线观看| 成人av在线看| 成人欧美一区二区三区黑人孕妇| 日韩伦理在线视频| 天天色综合色| 亚洲美女喷白浆| 亚洲自拍第三页| 偷拍精品精品一区二区三区| 亚洲综合久久av| 婷婷久久青草热一区二区 | 亚洲乱码国产乱码精品天美传媒| 国产超碰人人模人人爽人人添| 亚洲综合99| 欧美裸体男粗大视频在线观看| 男女做爰猛烈刺激| 黄色成人美女网站| 日韩欧美一区二区久久婷婷| 国产一区二区在线免费播放| 无遮挡爽大片在线观看视频| 亚洲综合在线视频| 一区二区免费电影| 电影av在线| 2023国产一二三区日本精品2022| av一区二区三区免费| 一级黄色大毛片| 奶水喷射视频一区| 97视频在线播放| 国产在线一二区| 在线看片不卡| 久久中文字幕视频| 久草福利资源在线| 日韩在线第七页| 亚洲天天在线日亚洲洲精| 99久久人妻精品免费二区| 51亚洲精品| 精品国产一区二区精华| 黄色三级视频在线播放| 日本电影久久久| 欧美三区在线观看| 亚洲精品一二三四五区| 日韩影片中文字幕| 91国产成人在线| 99视频免费播放| 欧美美女日韩| 91福利精品第一导航| 国产a级片免费观看| 午夜精品久久久久久久久久蜜桃| 色呦呦一区二区三区| 日韩黄色片视频| 六月婷婷综合| 欧美三级韩国三级日本三斤| 91热这里只有精品| 亚洲精品伦理| 717成人午夜免费福利电影| 天天看片天天操| 精品国产乱码久久久久久樱花| 91麻豆精品国产91久久久更新时间| 精品国产乱码久久久久久1区二区| 2019中文亚洲字幕| 日韩视频一区二区三区| 中国一级特黄录像播放 | 日韩精品不卡| 在线毛片网站| 亚洲女同ⅹxx女同tv| www.男人天堂网| 成人免费图片免费观看| 姬川优奈aav一区二区| 欧美黄网站在线观看| www.99热这里只有精品| 国产youjizz在线| 国产精品日韩成人| 粉嫩av一区二区三区天美传媒| 欧美videosex性欧美黑吊| 亚洲va在线va天堂| 午夜视频在线瓜伦| 国产乱码精品一区二区三区亚洲人| 日韩一区二区不卡| 91九色蝌蚪porny| 国产一区2区| 欧美成人全部免费| 免费观看成人毛片| 极品少妇xxxx偷拍精品少妇| 国产a一区二区| 韩国中文字幕2020精品| 亚洲九九爱视频| 黑人糟蹋人妻hd中文字幕| 国产第一精品| 亚洲韩国欧洲国产日产av| 国产美女免费网站| 欧美日韩第一区| 国产精品99久久久久久人| 国产内射老熟女aaaa∵| 久久伊人中文字幕| 国产日韩第一页| 台湾佬成人网| 亚洲精品一线二线三线| 亚洲精品视频网址| 亚洲高清久久| 91精品视频在线免费观看| 日韩三级电影网| 亚洲精品大片www| 日本www.色| 丝袜av一区| 欧美大码xxxx| 伊人网av在线| 久久综合九色综合欧美就去吻| 亚洲精品天堂成人片av在线播放| 国产一区二区主播在线| 精品成人在线观看| 三级在线观看免费大全| 日韩av电影天堂| 久久大片网站| 变态调教一区二区三区| 51精品视频一区二区三区| 久久成人激情视频| 亚洲激情影院| 国产高清精品一区| 成年人黄视频在线观看| 欧美在线观看视频一区二区 | 99久久国产免费看| 麻豆视频传媒入口| www一区二区三区| 尤物精品国产第一福利三区| 午夜婷婷在线观看| 91麻豆文化传媒在线观看| 久久久99精品视频| 精品视频在线一区| 久久精品国产亚洲| 一级全黄裸体免费视频| 国产精品美女久久久久av爽李琼 | 日本三级视频在线| 粉嫩av亚洲一区二区图片| 激情五月五月婷婷| 白嫩亚洲一区二区三区| 中文字幕亚洲欧美日韩高清| 在线观看你懂的网站| 国产色综合久久| 哪个网站能看毛片| 国产免费播放一区二区| 国产成人精品免高潮费视频| 黄色av网站在线| 欧美视频自拍偷拍| www.xx日本| 国产真实乱偷精品视频免| 综合久久国产| 精品国产亚洲一区二区三区在线 | 日韩高清不卡| 在线亚洲欧美视频| 国产精品久久久久久久免费| 亚洲欧美国产三级| 亚洲午夜精品在线观看| 欧美午夜影院| 久久国产精品-国产精品| 日本三级一区| 一本色道久久88综合亚洲精品ⅰ | 国产精品一二三在| 嫩草影院中文字幕| 欧美三级午夜理伦三级在线观看 | 久久九九亚洲综合| 超碰在线观看av| 欧美日韩亚洲一区二| 久久丫精品忘忧草西安产品| 麻豆91小视频| 男人添女人荫蒂免费视频| 青青草久久爱| 国产精品久久久久久久av大片| 9色在线观看| 日韩欧美另类在线| 丰满少妇xoxoxo视频| 中文字幕一区二区三区色视频| 中文字幕乱码在线人视频| 亚洲片区在线| 亚洲第一导航| 草草视频在线一区二区| 日韩免费av在线| 国产在线更新| 日韩精品一区二区三区第95| 最新中文字幕免费| 亚洲一区二区偷拍精品| 性少妇bbw张开| 激情欧美日韩一区二区| 久久久久久久久久网| 精品久久综合| 99久久99久久| 成人久久网站| 91av在线视频观看| 免费观看成人高潮| 精品丝袜一区二区三区| 国产女人18毛片水真多| 色综合久久综合网| 我家有个日本女人| 亚洲国产精品成人综合| 男男一级淫片免费播放| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产一级片久久| 国产精品美女一区二区三区| 中文字幕免费在线播放| 精品一区二区三区久久久| 国产a级一级片| 欧美精品色网| youjizz.com亚洲| 精品美女在线视频| 国内精品久久国产| 老司机亚洲精品一区二区| 国产激情999| 黄色aa久久| 欧美激情免费看| 麻豆免费在线观看| 一本色道久久综合狠狠躁篇怎么玩| 人妻无码中文字幕免费视频蜜桃| 91精品国产综合久久蜜臀| 成人h动漫精品一区二区下载| 亚洲一区二区三区视频在线播放 | 91久久久久久久久久久久久| 韩国精品主播一区二区在线观看| 国模精品视频一区二区| 亚洲卡一卡二| 欧美成人一二三| 国产欧美黑人| 精品国产一区二区三区久久久| 黄色的视频在线免费观看| 日韩av在线免费播放| 成人免费观看在线视频| 日韩精品专区在线影院重磅| 国产精品美女一区| 欧美美女bb生活片| 一级黄在线观看| 欧美日韩国产综合视频在线观看| 亚洲 国产 日韩 欧美| 色婷婷综合久久| av手机天堂网| 欧美亚洲动漫制服丝袜| 国产免费a视频| 在线欧美小视频| 制服丝袜在线一区| 欧美福利视频导航| 国产乱淫av片免费| 欧美一级在线观看| 亚洲第一黄色片| 精品国产乱码久久| 手机av在线免费观看| 亚洲国产成人久久综合一区| 天堂在线视频观看| 日韩精品免费视频| 免费福利在线视频| 国产一区二区三区在线视频| av在线电影播放| 日韩亚洲欧美成人| 欧美性video| 91精品国产乱码久久久久久久久| 人在线成免费视频| 国产精品精品久久久| 亚洲热av色在线播放| 91视频在线免费观看| 成人台湾亚洲精品一区二区| 国外成人免费视频| 九九在线精品| 亚洲一区二区自拍偷拍| 亚洲一区欧美| 你懂的av在线| 日韩av电影免费观看高清完整版| 爱爱爱爱免费视频| 国产成人综合在线| 成人免费看aa片| 国产精品盗摄一区二区三区| 欧美精品成人久久| 欧美午夜精品久久久久久久| 伊人免费在线观看高清版| 日韩免费观看高清完整版在线观看| 老牛影视av牛牛影视av| 一区二区欧美久久| 最新超碰在线| 国产不卡在线观看| 国模大尺度视频一区二区| 久久久久久久久久久久久久久久av| 日韩激情免费| 青娱乐自拍偷拍| 狠狠色丁香久久婷婷综合丁香| 亚洲一区二区在线免费| 国产精品网站在线观看| 国产在线拍揄自揄拍无码视频| 在线看日本不卡| 精品人妻一区二区三区四区不卡 | 日韩av中文在线观看| 一区二区三区人妻| 国产欧美一二三区| 国产在线精品观看| 91精品一区二区三区在线观看| 无码精品视频一区二区三区| 日韩色av导航| 成人福利视频| 国产精品污www一区二区三区| 不卡中文一二三区| 日本少妇高潮喷水视频| 激情小说亚洲一区| 天天躁日日躁aaaa视频| 亚洲午夜精品17c| 国产农村老头老太视频| 夜夜嗨av一区二区三区免费区| av3级在线| 91久久大香伊蕉在人线| 成人区精品一区二区婷婷| 国产3p露脸普通话对白| 国产九色精品成人porny| 免费污网站在线观看| 亚洲va在线va天堂| 性一交一乱一透一a级| 精品国产视频在线| 色综合天天色| 欧洲视频一区二区三区| 日韩午夜av在线| 免费观看污网站| 亚洲精品自拍动漫在线| 一级片一区二区三区| 一区二区三区无码高清视频| 欧美黑人疯狂性受xxxxx野外| 精品一卡二卡三卡四卡日本乱码| 国产精品扒开腿做爽爽爽软件| 中文字幕国产高清| 国产精品夫妻自拍| 国产又粗又猛又色又| 色哟哟入口国产精品| a屁视频一区二区三区四区| 欧美日韩无遮挡| 久久精品日韩欧美| 亚洲精品成人无码| 色婷婷综合久久久中文一区二区| 天堂资源中文在线| 日本欧美一二三区| 亚洲人成精品久久久 | 国内精品自线一区二区三区视频| 欧美色图17p| 欧美久久久久免费| 欧洲日本在线| 成人精品久久一区二区三区| 久久久久久久久久久久久久久久久久 | 国产一区二区不卡老阿姨| 神马久久精品综合| 69堂成人精品免费视频| 91麻豆一二三四在线| 亚洲综合精品一区二区| 国自产拍偷拍福利精品免费一 | 毛葺葺老太做受视频| 久久久99精品免费观看| 中文字幕高清在线免费播放| 亚洲欧美日韩区| 久久久成人av毛片免费观看| 亚洲国产成人不卡| 精品在线免费视频| 青青草原在线免费观看视频| 精品少妇一区二区三区视频免付费| av日韩国产| 欧美一区二区三区四区夜夜大片| 久久亚洲影院| 国精产品久拍自产在线网站| 日韩三级免费观看| 欧美另类老肥妇| 亚洲精品久久区二区三区蜜桃臀 | 久久高清免费观看| 中文字幕av久久爽一区| 欧美一区二区三区精品| 国产在线xxx| 日韩视频在线播放| 国产一区福利在线| 美日韩一二三区| 日韩小视频网址| 国产精品国产| 色婷婷成人在线| 亚洲香肠在线观看| 黄色大片在线看| 亚洲xxx自由成熟| 亚洲欧美久久久| 一起操在线播放| 日韩精品在线观看一区二区| 亚洲国产91视频| 国产精品50p| 亚洲三级理论片| 青青免费在线视频| 亚洲影影院av| 午夜亚洲精品| 欧美精品久久久久性色| 国产亚洲视频在线| 亚洲天堂av资源在线观看| 日本三区在线观看| 亚洲综合一二三区| 中文字幕日本在线| 国内精品**久久毛片app| 国产真实乱偷精品视频免| 亚洲国产av一区二区三区| 欧美国产日韩在线| 日韩黄色大片网站|