精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

裸模一区二区三区免费| 在线精品高清中文字幕| 久无码久无码av无码| 日韩一区免费视频| 日韩精品欧美精品| 色综合久久88色综合天天看泰| 漂亮人妻被黑人久久精品| 日本精品网站| 亚洲国产cao| 亚洲精品一区二区三区蜜桃久 | 在线精品一区| 色一区av在线| 国产交换配乱淫视频免费| 动漫一区二区三区| 欧美在线|欧美| 国产精品久久久久9999爆乳| 香蕉视频免费在线播放| 99re成人精品视频| 91久久爱成人| 国产美女三级无套内谢| 日一区二区三区| 午夜精品久久久久久久久久久久久| 老司机深夜福利网站| 婷婷综合一区| 亚洲国产精品va| 国产黄色一区二区三区| 成人涩涩视频| 欧美中文字幕一区二区三区| 精品少妇人妻av免费久久洗澡| 成人在线视频网址| av黄色免费网站| 国产精品极品在线观看| 91精品国产综合久久久久久久久久| 成人在线免费在线观看| а√在线天堂官网| 亚洲国产cao| 日本免费a视频| 在线观看小视频| 亚洲日本丝袜连裤袜办公室| 亚洲综合av一区| 东热在线免费视频| 久久精品亚洲国产奇米99| 久久免费一区| 欧洲毛片在线| 久久久亚洲午夜电影| 好吊色欧美一区二区三区四区| 精品久久人妻av中文字幕| 久久成人麻豆午夜电影| 国产剧情日韩欧美| 中文字幕一区二区三区四区免费看| 久久三级视频| 国产成+人+综合+亚洲欧洲| 91video| 国产精品一卡| 国产福利视频一区二区| 神马久久久久久久| 日韩成人一区二区| 国产免费亚洲高清| 国产乱淫a∨片免费观看| 久久国产福利国产秒拍| 91久久国产精品| www香蕉视频| 不卡av免费在线观看| 久久久久久99| 在线观看完整版免费| 国产精品国产三级国产a| 手机福利在线视频| 色a资源在线| 精品久久久久久| 超碰影院在线观看| 祥仔av免费一区二区三区四区| 欧美丰满高潮xxxx喷水动漫| 无人码人妻一区二区三区免费| 免费欧美网站| 亚洲精品国产福利| 亚洲电影免费观看| 日韩在线综合网| 欧美在线va视频| 欧美精品99久久久**| 丰满人妻一区二区三区大胸| 欧美黑人巨大videos精品| 亚洲无亚洲人成网站77777| 亚洲av无一区二区三区| 伊人久久久大香线蕉综合直播| 91精品国产色综合久久不卡98| 国产情侣小视频| 国产剧情一区在线| 女人一区二区三区| 黄色片网站在线| 精品国产乱码久久久久久虫虫漫画 | 91视频在线免费| 久久99高清| 美日韩丰满少妇在线观看| 欧美三日本三级少妇99| 老汉av免费一区二区三区| 国产美女精品在线观看| 国产三级在线| 亚洲小说欧美激情另类| 久久久久久久片| 精品淫伦v久久水蜜桃| 在线精品国产欧美| 亚洲免费激情视频| 国产精品一区二区在线播放| 欧美精品一区二区三区久久| 日本小视频在线免费观看| 91电影在线观看| 日本精品一二三区| 欧美高清在线| 国产精品9999| 天天插天天干天天操| 亚洲图片你懂的| 少妇高清精品毛片在线视频| 亚洲一区二区三区中文字幕在线观看 | 国产精品一二三在线| 色窝窝无码一区二区三区成人网站| 国产精品久久午夜夜伦鲁鲁| 免费在线观看毛片网站| 国产一区在线电影| 色综合天天狠天天透天天伊人 | 永久av在线| 亚洲一二三区视频在线观看| 国产又黄又猛的视频| 免费毛片在线不卡| 97免费中文视频在线观看| 国产夫妻在线观看| 国产精品国模大尺度视频| 亚洲天堂av线| 精品国产一区二区三区香蕉沈先生 | 亚洲欧美另类中文字幕| 日本天堂网在线观看| 国产精品69毛片高清亚洲| av动漫免费观看| 99re久久| 中文字幕欧美在线| 中文字幕欧美人妻精品| 久久看人人爽人人| 92看片淫黄大片一级| 秋霞在线一区| 亚州国产精品久久久| 亚洲av无码乱码国产精品久久| √…a在线天堂一区| 成年人三级黄色片| 三级电影一区| 国产专区精品视频| 久操视频在线免费播放| 亚洲精选一二三| 国产精品三级视频| 91在线视频播放| 久久精品视频网| 日韩一区二区三区高清免费看看| 免费不卡av网站| 婷婷激情综合| 亚洲bt欧美bt日本bt| 国产激情视频在线观看| 欧美一级日韩不卡播放免费| 黄色录像二级片| 国产激情视频一区二区三区欧美| 天堂а√在线中文在线| 一区二区日韩| 欧美夜福利tv在线| 亚洲欧美日韩动漫| 91国偷自产一区二区使用方法| 99精品全国免费观看| 六月婷婷色综合| 欧美色欧美亚洲另类二区| 久久综合久久综合这里只有精品| 人在线成免费视频| 一区二区三区天堂av| 亚洲中文字幕一区二区| 亚洲激情中文1区| 国产伦精品一区三区精东| 99在线|亚洲一区二区| 日本一区免费在线观看| 成人在线视频免费| 色综合久久88| 国产在线91| 69堂国产成人免费视频| 国产对白videos麻豆高潮| 久久这里只精品最新地址| 午夜国产一区二区三区| 欧美黄免费看| 欧美日韩精品免费在线观看视频| 国产成人久久精品麻豆二区| 美日韩丰满少妇在线观看| 亚洲欧美综合一区二区| 精品视频一区 二区 三区| 欧美成人免费观看视频| 91热门视频在线观看| 911福利视频| 在线播放日韩| 亚洲女人毛片| 久久99精品国产自在现线| 国产精品主播视频| 99thz桃花论族在线播放| 这里只有精品在线观看| 女人18毛片一区二区三区| 欧美色图一区二区三区| 日韩欧美视频在线免费观看| 国产三级三级在线观看| 亚洲欧美在线高清| 久久久久9999| 国产一区二区毛片| 欧美两根一起进3p做受视频| 国语精品一区| 一区二区冒白浆视频| 欧美男人操女人视频| 成人精品aaaa网站| 午夜欧美巨大性欧美巨大| 欧美国产激情18| 91caoporm在线视频| 日韩电视剧免费观看网站| 国产精品免费无遮挡| 在线免费亚洲电影| 日韩特级黄色片| 亚洲一区影音先锋| 女同久久另类69精品国产| 国产亚洲成av人在线观看导航| 亚洲色图欧美另类| 国产在线精品免费| 欧美三级理论片| 性色一区二区三区| 国产精品网站免费| 欧美午夜影院| 成人在线免费高清视频| 国产精品91一区二区三区| 久久久久久国产| 成人信息集中地| 91蜜桃视频在线| 欧美肉大捧一进一出免费视频| 黄色日韩网站视频| 天天干天天操天天做| 日韩精品视频免费看| 国产精品一级在线| 欧美午夜精品理论片| 日本不卡在线视频| www.日日操| 久久高清国产| 少妇人妻互换不带套| 天堂va蜜桃一区二区三区漫画版| 欧美三级一级片| 欧美亚洲视频| 超碰97人人射妻| 久久在线精品| 男人天堂成人在线| 日本91福利区| 五月婷婷之婷婷| 国产一区二区在线影院| 伊人国产精品视频| 国产精品一区二区在线看| 2025中文字幕| 99视频精品在线| 37p粉嫩大胆色噜噜噜| 国产午夜精品一区二区三区嫩草 | 欧美一级电影久久| 不卡一二三区| 日韩美女视频免费看| 巨胸喷奶水www久久久免费动漫| 国产精品美女av| 日韩福利影视| 超碰97国产在线| 欧美电影在线观看完整版| 欧美日韩视频在线一区二区观看视频 | 777久久久精品| 国产99久久九九精品无码免费| 欧美成人vr18sexvr| 天堂在线观看视频| 亚洲欧洲免费视频| 日韩大片在线永久免费观看网站| 精品国偷自产在线视频99| 日韩激情美女| 日本精品在线视频 | 91精品专区| 日韩精品中文字幕视频在线| 韩国三级在线观看久| 久久精品亚洲一区| 91福利在线尤物| 国产精品久久久久久久久久ktv| 日韩毛片免费看| 国产亚洲一区二区三区在线播放 | 亚洲日本成人女熟在线观看 | 亚洲视频在线一区观看| 毛片aaaaa| 在线亚洲一区观看| av男人天堂网| 亚洲女人被黑人巨大进入| 精品黄色免费中文电影在线播放| 欧美精品九九久久| 91成人抖音| 国产日韩一区欧美| 日韩国产在线| 欧美黑人经典片免费观看| 奇米亚洲午夜久久精品| 性农村xxxxx小树林| 国产精品福利电影一区二区三区四区| 久操视频免费在线观看| 欧美激情91| 国产精品国模在线| 亚洲国产aⅴ精品一区二区| 久热这里只精品99re8久| 亚洲国产精品成人| 成年人小视频网站| 成人avav在线| 亚洲不卡在线播放| 欧美伊人精品成人久久综合97 | 免费特级黄色片| 麻豆成人综合网| 丰满圆润老女人hd| 亚洲午夜免费福利视频| 国产露脸91国语对白| 一区二区欧美激情| 午夜裸体女人视频网站在线观看| 4444kk亚洲人成电影在线| 欧美日一区二区| 国产免费观看高清视频| 国产福利电影一区二区三区| 亚洲aaa视频| 色综合久久66| 深夜福利视频在线免费观看| 欧美大片va欧美在线播放| 精品176极品一区| 日韩精品成人一区二区在线观看| 亚洲美女91| 日本少妇一级片| 中文字幕一区二区5566日韩| 丰满人妻一区二区三区四区| 亚洲免费成人av电影| 亚洲资源一区| 91麻豆国产语对白在线观看| 久久影视一区| 亚洲色图 在线视频| 国产女人水真多18毛片18精品视频 | 中文字幕中文字幕在线中高清免费版| 国产玖玖精品视频| 欧美日韩在线观看视频小说| 已婚少妇美妙人妻系列| 26uuu另类欧美| 蜜臀精品一区二区三区| 亚洲欧美www| 欧美日韩视频免费观看| 日本欧美精品久久久| 日韩中文字幕麻豆| 亚洲欧美va天堂人熟伦| 在线观看欧美黄色| aⅴ在线视频男人的天堂 | 国产一区二区三区在线观看| 中文字幕精品www乱入免费视频| 亚洲一区二区三区四区| 五月天色一区| 精久久久久久久久久久| 天天综合天天做| 日韩欧美国产一区在线观看| 男女在线观看视频| 精品国产一区二区三区四区vr| 国产免费成人| 一级特黄曰皮片视频| 制服丝袜国产精品| 91三级在线| 国产九色精品| 天堂精品中文字幕在线| 国产三级aaa| 日韩欧美成人午夜| 第一福利在线视频| 欧美日韩视频在线一区二区观看视频| 久久免费黄色| 91狠狠综合久久久| 精品国产精品网麻豆系列 | 色一情一乱一乱一91av| 大片免费播放在线视频| 成人两性免费视频| 欧美日本一区二区高清播放视频| www.男人天堂| 色偷偷久久人人79超碰人人澡| 日韩精品成人av| 国产午夜精品在线| 久久一区精品| 亚洲欧美小视频| 日韩电影免费观看在线观看| 另类中文字幕国产精品| 强伦女教师2:伦理在线观看| 岛国一区二区在线观看| 国产第一页在线观看| 欧美精品一区在线播放| 亚洲欧美日本伦理| 91插插插影院| 欧美视频在线免费看| 黄色在线观看网站| 欧美12av| 国产成人免费在线视频| 无码人妻av一区二区三区波多野| 久久久精品欧美| 亚洲色图美女| 免费高清视频在线观看| 色香蕉久久蜜桃| 欧美巨大xxxx做受沙滩| 亚洲精品一区二区毛豆| 成人黄色一级视频| 一级aaaa毛片| 2020国产精品视频| 欧美在线三级| 最新日韩免费视频|