為什麼 2G RAM 的 6S 運行時,剩餘內存依然不到 200 MB?

內存增大一倍,剩餘內存卻沒有多大差別。


iOS 2G內存
啟動
iOS:上朝。
用戶點了QQ
QQ:報告,我要100M內存!
iOS:准了。
用戶聊完天換到快播看了個藍光動作片。
快播:報告,我要800M內存!
iOS:行,省點用。
用戶感到很疲憊,準備上網搜一下,打開了UC。
UC:報告,我要200M內存。
iOS:拿滾。
搜完波xx衣,用戶決定刷刷知乎。
知乎:報告,我要100M內存。
iOS:准奏。
看完被平均20K的月薪,用戶對自己的生活很滿意,於是打算玩把遊戲,於是打開了無盡之劍。
無盡之劍:吾祈1000M內存,忘准奏。
iOS:天大地大,用戶體驗最大,快播,趕緊騰地。
快播:諾。
iOS:無盡聽封,此1000M儘管拿去用吧。
快播:(?_?)
用戶耍夠了,打算換個口味,於是開擼艦娘。
艦娘:臣妾需要500M內存。
iOS:國庫不足啊,QQ,把你那100M上交吧。
QQ:?(?д?;? )陛下,微臣兢兢業業,幫您聯繫妹子,實時關注動態,望陛下三思啊。
iOS:麻利的。
QQ:(?_?)。
iOS:後台通知服務還是會給你留的。
QQ:遵旨。
QQ被午門。
iOS:UC···:
UC:臣明白。
UC自刎當場。
iOS:艦娘啊,這些內存都是包含血淚,你可以好好服侍朕吶。
艦娘:臣妾遵旨。
iOS:恩,看來2G內存完全足夠的,朕的江山真是穩固如斯啊。
此時用戶點擊某不明應用。
XX:俺要3G內存。
iOS:滾蛋,來人,拉出去斬了。
//======
Android
啟動
Android:上朝..
百度:臣有事啟奏,需要100M來養活一家子。
360:臣亦有事啟奏,需要200M來養活一家子。
xx:微臣要50M。
oo:微臣需要1G。
Android:oo斬了,其他准了。
用戶點擊了QQ。
QQ:報告,需要100M內存。
Android:准了。
用戶聊完準備看個步兵藍光,於是打開了百度影音。
百度影音瞬啟。
Android:喲,小伙挺快,一直在殿外聽宣是吧。
百度影音:家父已經給我留了後門了,我還需要800M。
Android:...給了。
用戶感到異常疲憊,準備上網搜個方子補補身子。於是打開UC。
UC:微臣需要200M。
Android:恩,可以,百度影音,把資源收一下。
百度影音:陛下,萬一用戶還看呢。
Android:好吧,來,UC,這200M是從國庫來的,先用著。
UC:諾。
搜完十全大補丸,用戶決定刷刷知乎補補智力。
知乎:恩,看山需要100M。
Android:國庫暫時充裕,給。
用戶智力暫時+1,感覺自己又能一戰了,於是用戶準備擼無盡之劍完美破解中文漢化數字典藏版。
無盡:先來1000M嘗嘗鹹淡。
Android:好,那啥,百度影音,現在國庫不怎麼充裕,把資源上交回家去吧。
百度影音:陛下,萬一用戶還看呢。
Android:趕緊麻利的。
百度影音:父上(?_?)。
百度:先這麼的,待會為父再拉你上來。
百度:陛下,這影片可收,但影音一片忠心望保留一下進程啊。
Android:恩,好吧。
百度影音被削頂戴花翎,留職查看。
百度影音-700M。
國庫增加700M。
Android:無盡愛卿,這1000M儘管拿去用吧。
無盡:哼。我的廣告插件還需要100M。
Android:...好好好,拿去拿去。
無盡:哼。我的三方內購插件還需要100M。
Android:...好好好,給給給。
無盡:哼...
百度:陛下,我可殺不必要的進程,只需要給微臣200M即可。
Android:愛卿受累了,來來來,這200M權當津貼了。
無盡部分額外進程被監管,-50M。
Android:哎,先祖基業4G,我自1G,可如今已禍禍大半,日子得節約一下了。
用戶擼完無盡,apm達5還是被牛頭怪生擼一遍。
用戶:卧槽,啥破機子,咋這麼卡。
Android:...
用戶偶感無腦劃屏確實無法考驗那臨時的智力buff,決定擼艦娘,順便擼。
用戶打開艦娘。
艦娘:臣妾需要500M。
Android:QQ,我也不聊了,內存是不是可以。。。
QQ:哼,有消息,有消息
Android:...
Android:UC,那啥。
UC:這個,我也不怎麼高,給留個進程吧。萬事留一線,日後好見面。
Android:...好吧。
UC被削,帶薪下崗。
Android:無盡,這...
無盡:哼,用戶說不定還玩呢。
Android:是是是。
Android:這這,用戶剛玩完無盡也不知道還不會不繼續,也不好奪了無盡的封地,這QQ,哎,也不是好欺負的主,上次收回了20M的津貼他把自家管家托福給我了結果又多掏了100M,這,還是從國庫出吧。
日復一日,用戶覺得手裡的機器更卡了,覺得重新換朝。
Android重啟。
Android國庫充裕。
...
//===========抖了個機靈=====
編個段子其實只是為了具體生動形象活潑一點而已
內存這玩意就是拿來用的,內存利用率越高基本上運行效率越高,復用的時候運行越快,所以不用擔心剩餘量(額,限於iOS)
iOS中內存基本上都是現用現回收,不給殺殺殺殺無赦。不必擔心內存剩餘少哈。
Android嘛,嘛,就說5.0以後吧,內存管理的效率也是蠻好的,主要還是國內的無良應用啊,非要死皮賴臉的留後台,特別是一大家子的殺掉一個拉活一個(感覺遇到牧師隊了╮(╯▽╰)╭),都是淚,沒辦法,GoogleServer被封不留線程就真與世隔絕了


內存是拿來用的


說的好像你從70平的房子換到140了以後那多出來的70不會放東西一樣


自從Windows 95以來,微軟的一些軟體設計方式導致了用戶被培養出一種認知:內存用光了機器就會卡,非常卡。

因為早起的PC內存都是很小的,相對現在來說,一般Windows 95時代是 4-64MB,Win2000時代是128-512MB,WinXP後期才有1-2G內存。
Windows是多任務系統,而且不太區分前台和後台應用,都是等同對待,不會有因為前台應用需要內存多了就把後台程序殺掉的事情。
當內存不足的時候,Windows採用交換文件來擴充內存,就是用磁碟文件來充當內存,把一部分內存數據轉移到磁碟上,需要的時候再轉移回來。
即使最快的硬碟,讀寫速度也比內存低了兩個數量級,所以一旦開始大量使用交換文件,機器就會變得非常卡,因為Windows無法精確區分前台後台程序,所以經常會出現內存剛被交換到磁碟很快又需要讀取回來的情況,所以基本會把內存拖慢到磁碟的水平。
所以Windows用戶多年來根據使用經驗總結出一個防止卡的方法,就是不要把內存用光,盡量把內存使用控制在 80%以下,越低越好。
所以用戶總是比較關注內存佔用情況,一旦出現機器卡第一反應是關程序省內存。

這種認知一直保持到現在,還帶到了手機端,已經很少有人去思考背後的原因了,簡直成為了一種下意識反應,一種信仰了。所以手機一卡就殺App,導致各種清理內存的App很流行。

實際上手機端已經摒棄了Windows的設計方式,改為明確區分前後台進程,內存不足的時候後台App會被自動殺掉,後台App即使沒有殺掉也是優先順序比較低的,不會和前台App搶資源。
所以內存佔用接近上限是沒關係的,反而說明內存利用率高,數據放到內存里總比放到外部存儲里訪問要快得多,即使App本身沒什麼佔用,系統也會拿一部分內存作為外部存儲的緩存。

在手機端存儲(內存/外存)不再是性能瓶頸,CPU和網路才是導致卡的主要原因。


樓上都沒有認真回答問題啊,佔個坑,晚上碼字。

昨晚有事情耽誤了,實在抱歉。
我先簡單回答一下,內存作為內部存儲器,是為了給CPU使用的,裡面存儲了一些進程所需的代碼和數據。而一般情況下即使我們打開了很多程序,OS也不會把內存佔用100%,一個不能保證自身不掛掉的OS不是一個好OS。那麼內存放不下怎麼辦,當下有換頁機制,簡單說,我們把所需數據分頁存儲,CPU需要運行某個進程時會從內存中調取所需數據使用。而有的進程不在內存中難道就一直不能運行嗎?當然不是,換頁機制會將等待運行的進程的數據根據相應的演算法從外部存儲器調換到內存以供使用。而換頁的後果就是速度減緩,機器太卡。那麼你的內存越小,駐留內存的進程就非常小,並發的時候換頁會經常發生。內存變大,響應換頁也就變少了,速度也得到了提升。
以上只是一個方面。在醫院手機碼字,破20贊上機詳細說

所以,適當的增加內存可以提高機器效率!


ios 的內存管理機制有關.
ios 系統會儘可能把你閑置的內存利用掉, 比如用來緩存你可能會用到的數據. 等到你開大型應用需要用到這些限制內存的時候, 會自動釋放出來.


如果6s的剩餘內存比6正好多出來1G……

那這2G內存有啥意義? 為了讓你看著好看?


現在Linux系和win系都會緩存經常使用的數據在內存,把內存塞滿都不奇怪,只是這部分數據會在程序需要內存時被釋放掉。ios上面只是給你直觀表示出來了,如果你用win7以上的系統,去資源管理器看看內存使用情況,除了硬體使用和正在使用的內存,其他的內存幾乎都被緩存數據填滿了,只是不給你直觀表示出來,這樣做的好處就是運行經常使用的軟體速度會快很多,因為可以直接從內存讀取。Linux系可以用free命令,cached那一項就是緩存的數據


你一個1g內存的安卓手機實際顯示的可用內存大概500m左右,然而你運行一個800m的遊戲也照樣可以,因為系統把後台的程序給關了,騰出空間讓你用,這300m中有各種你在玩遊戲中用不到的功能,比如語音輸入,比如桌面主題,然而你只要用桌面鍵返回桌面,那遊戲就有可能會退掉,因為內存不夠了。

如果你用的手機內存有2g,實際可用1.3g,那運行800m的遊戲返回到桌面,遊戲是不會退掉的,因為夠用。

然而題主的問題在這(安卓和ios同理),為什麼增加了1g內存後手機實際可用內存才……增加了500m?

因為軟體們發現這房間比以前更大了,可以放更多工作用的工具了,不用像以前主人叫工作時還要將那些不用工作的人的工具收好,再放上自己的工具來工作,這樣工作效率高,而且其他人來工作時也不用再搬工具出來了,地方大大的,用不著收拾,所以軟體們沒事總把工具拿出來放,有些流氓放得比較多,

由於地方大,所以軟體們發現即使他人在工作以自己也是有地方放工具的,自己在不用工作時也將自己的工具拿出來放,以便開工時更快(所以安卓的手機即使沒有軟體運行內存也會減少,ios比較有潔癖,他不會讓軟體們放太多東西,夠用就行)。

然而每個軟體的東西都是有限的,放到一定就完了,所以不會發生內存全用完,然而有些不檢點的軟體總是喜歡撿小廣告和報紙回家,佔用空間,主人如果不丟就會沒空間。

大房子租金貴(耗電)


有空補充。


有一天軟體們過的好好的,結果一幫拿槍的(大型遊戲)傢伙沖了進來,軟體們立馬收拾東西跑啊,那還顧得收拾工整,拉上就跑,於是落下一些東西(後台還存在)

拿槍的傢伙在家裡所有空間鬧騰,離開後房間空了一大片,然後在主人的安排下一些重新進來工作,一些就直接拿上落下的東西滾去睡覺(進程殺死)。

手機打字,排版有問題。。。有空補充


「為什麼我每個月工資從 10K 漲到 20K 了,我最後存下來的錢還是不到 2K ?」


樓主公司請了十個人。是都安排去幹活呢還是放著閑置呢?


說點不切題的,安卓手機內存是拿來看的,蘋果手機內存就成拿來用的,這雙重標準也是醉了。

要是把問題6s改成小米、魅族、鎚子之類,下面回答估計不忍直視啊。

不可否認,假如同樣剩餘100mb,ios會比Android流暢。


不卡就行唄,剩餘內存有多少有什麼關係?


內存不足時,系統會發送一個通知給App,App就會執行『didReceiveMemoryWarning』這個方法,釋放掉一些內存,究竟釋放了什麼,取決於代碼寫了什麼。

如果這都不足以支撐當前App所需要的內存,系統會殺掉早先運行的App。

就這樣,殺老的,給新的,內存一直接近滿負荷狀態。


這涉及到的是內存的運行機制,無論ios還是安卓,內存擴大一倍,都不能把兩個內存水平下的佔用內存和剩餘內存混到一起相加減。

比如,在同一個使用環境下,1g的機子內存剩餘200M,內存突然增大到2g,其他條件不變,剩餘內存並不是會變為1.2g。究其原因,內存是拿來用的,系統會根據實際情況進行分配。

然而有些安卓機,同樣的內存,不同品牌或型號,開機剩餘內存卻相差很大。主要原因在於系統默認啟動程序的多少。


我跟你講:內存是用來用的,而不是空出來讓你看的。


我要是做系統第一件事就是把普通用戶查看內存的功能給封了


明明還1.5G能用嘛。
安卓的話,2G內存估計只有0.3G能用吧


剛截得,還熱乎。

8G內存,Windows 10,可用內存8M我是不是該哭會?任務管理器里連條線都看不見。。。iOS的可用內存是只顯示了最後那一塊可用的,Windows任務管理里的可用內存是包括了那塊備用的。Android不太清楚。


我曾經也傻傻的把我8G內存的MBP一遍遍去清理。心想,MD,PC4G內存都有大把空餘呢,水果這什麼情況……


推薦閱讀:

為什麼最新的 iPhone 6 內存只有 1G,而今年很多安卓旗艦機已經把 3G 內存當標配了?
像 Instagram 這樣的應用如何為 iPhone 6 Plus 優化?
為什麼 iPhone 6 推出之後網民的負面評論很多?
Apple 和 GT Advanced 的 Twin Creeks 『Hyperion』 雙層藍寶石技術有何精妙之處?
如若藍寶石屏幕保護玻璃是 iPhone 6 可選付費升級,多少人會買帳?

TAG:iOS | iPhone6 | iPhone6s | iPhone6sPlus |