看板 iOS 關於我們 聯絡資訊
許多不懂記憶體運作的朋友對於剩餘記憶體都會有些迷思, 千方百計要找一些方法來"清空記憶體"來試圖讓機器快一點, 這些都是可以理解的, 但只要搞懂記憶體的運作原理後, 自然就可以破除這些迷思. 假設你今天住在一棟沒電梯的十樓透天厝裡, 你都在一樓辦公, 而書房則是在十樓. 當你需要查一些資料的時候, 你就得爬樓梯到十樓, 把你要的那本書拿下來到一樓, 看一看之後再走回十樓, 放回書架再走回來. 如果你等一下又要用這本書, 就又要再走回十樓拿, 看完再走回十樓放回去. 你一定想這樣子實在是太麻煩又浪費時間, 所以想出了一個好方法, 就是在一樓辦公桌旁邊擺一個小書櫃, 當你去十樓拿書下來後, 就先放在那個小書櫃裡而不放回去十樓, 這樣子當你下次萬一又要用那本書的時候, 隨手就可以拿到那本書, 連站起來都不用了. 可是阿, 書櫃的大小是有限的, 總有一天會被塞滿, 萬一有一天被塞滿了, 你又從十樓拿了一本新的書下來, 這時該怎麼辦? 最直接的方法就是不要動書櫃, 現在這本書看完就直接放回十樓, 但這個方法顯然不好, 書櫃上可能有一堆根本沒有在看的書, 但你這本需要的書卻要一直走回十樓拿. 一個方法是, 隨手抓一本書把他放回十樓, 這樣就有空間可以放新的書了. 不過萬一你隨手抓的那本書你等一下就要用, 又要再上去拿, 很麻煩滴. 比較聰明的做法是, 你發現有本書櫃上的書是遠古時期拿下來的, 其它的書都是最近才拿下來的, 你就決定把那本最久以前拿下來的書放回去十樓, 因為他將來被用到的可能性你覺得最低, 剩下的空間就可以擺現在剛拿下來的這本書. 但你想一想又覺得好像不太對, 那本書雖然是一年前拿下來的, 但你每天都會拿出來翻一下, 反而是上星期拿的那本書, 只看了一次就再也沒有看過了, 好像應該是把上星期的那本書放回去才對, 也就是依照使用頻率來決定誰該回十樓. 更聰明的人就會統計一下他每本書用的頻率與模式, 比方說有的書只有星期一會用, 那星期二如果要把一本書放回去的話, 就是放那本只有星期一要用的書, 可想而知這個方法雖然很有效但更複雜. 在這個例子中, 一樓辦公室就是CPU, 十樓就是Flash (閃存), 一樓辦公桌旁的小書櫃就是RAM (記憶體), 書就是APP運行所需要的資料, 而書滿了怎麼把不要的書丟掉則是記憶體管理的一環. 從這裡就可以看出, 書櫃並不是越空越好, 當書櫃是空的時候, 代表你每次拿書都要回到十樓, 反而是書櫃滿滿的比較方便. 而記憶體管理是很重要的一件事, 好的記憶體管理在比較小的RAM上可能還會運作的比爛的記體管理在比較大的RAM上好, 所以RAM的大小並不一定代表運作速度的快慢. 不過現在的書商越做越暴力, 書做的越來越厚 (一本一公尺厚XD), 厚到你的小書櫃放沒兩本就滿了, 你就會被強迫一直把某本書放回去, 之後再回十樓拿回來, 這時就只能去把書櫃加大了. 當然無限制的加大書櫃是最無腦的解決方案, 但買書櫃是要錢的, 放書櫃的土地也是要錢買的, 最有效率的省錢方式就是, 你看看你平常最多用多少書、或是平均會用多少書 每本書平均有多厚, 你就買剛剛好大小的書櫃就行, 不然你買一個圖書館但發現你平常只看十本書, 就殺雞用牛刀啦. (除非你想表示的就是老子很有錢....) 這個的意思就是, 記憶體大小夠用就好, 如果你平常只是上上網、打打電話、聽聽音樂, 買超大記憶體的手機只是浪費錢而已. 理解了這個就可以打破大家平常有事沒事就清空一下記憶體的問題, 清空記憶體的意思就是你手動把所有小書櫃上的書拿回去十樓放, 把小書櫃清空. 這樣代表什麼? 代表如果你等一下要用到剛剛書櫃上還有的書的話, 你本來只要伸手一拿就可以, 現在變成要再走回十樓把他拿下來, 這樣只會變的更麻煩更浪費時間而不是更方便! 所以不要再亂清除記憶體了, 只會讓你的手機更不順而已. 有人會說, 不對阿, 我在桌機上有時不清除記憶體就會很慢, 清完就順了! 這個有兩種可能 (至少), 一是他的書櫃管理做的不好, 書櫃滿了亂丟書, 或是乾脆就不把新書放進小書櫃, 每次都上十樓拿, 你只好強制把小書櫃清空, 這樣就可以放的下新書了. 二是有的書商做的書有點劣質, 你放在書櫃上竟然融化黏在書櫃上了! 這使得新書沒地方放. 這時只好清專業的清潔公司來, 把這些劣質書從書櫃上面移除, 才有位子可以放新書. 總結來說, 記憶體是被用的越滿越好, 選擇符合自己需求的記憶體大小就好, 更大只是浪費錢而已, 然後沒事不要亂去清空記憶體, 除非你真的知道你在幹麻XD 謝謝~ ※ 引述《waynan (皮帶漸寬)》之銘言: : 目前IOS版本:10.0.1 : 機型:iphone7 128G : 問題描述:發現手機的RAM使用量有點異常, : 因為我原本使用的是iphone5,關掉所有背景程式後 : RAM通常都會還剩下500MB未使用, : 但是今天拿到iphone7後,使用手機醫生去看, : 也把所有背景程式通通關掉了,發現RAM使用量高達85% : 也就是可用的RAM只剩下500~600MB之間, : 想請問版上使用者,這是正常的嗎? : 還是IOS 10本來就吃很多資源了? : 可是想想也不太合理,如果是IOS吃那麼多資源, : 那配備只有1G RAM的手機升級到IOS10不就幾乎沒RAM可使用了嗎? : 所以請問大家這種情況會是什麼原因比較有可能? 非常感謝! -- ▂▃▄▃▂ ◢ ˙ ˙ ▉▃ /喵喵~~~~ ◣╲ˍ ╱▎ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 76.24.28.34 ※ 文章網址: https://www.ptt.cc/bbs/iPhone/M.1475958030.A.C05.html ※ 編輯: denru01 (76.24.28.34), 10/09/2016 04:28:24
s3111833: 推 分析讚! 10/09 04:29
nashmvp: 推 10/09 04:59
sietto: 你... 10/09 05:48
o56432: 推 10/09 05:49
g380risde: 推 10/09 06:04
mall456kimo: 清楚明白啊 10/09 06:22
MasterDs: 推 用簡單的說法讓不懂的人懂 10/09 06:36
ohlong: 重點是現在很多超大遊戲 不清書櫃準備閃退 10/09 06:45
imgkiller: 舉例很好,可是最後論述在有些情況之下是錯的。今天我 10/09 06:50
imgkiller: 有經驗在開某些app很容易閃退,當然最好的做法就是先把 10/09 06:51
imgkiller: 背景在跑的,佔ram的刪一刪。那是iphone在沒jb的情況下 10/09 06:52
imgkiller: 要把背景的app全清,搞不好要滑十幾次銀幕,那當然在多 10/09 06:53
imgkiller: 數情況下就懶得搞了。但如果用啥android,還是jb啥的能 10/09 06:54
imgkiller: 一鍵清空佔ram的app,那點兩下還是很值得的。 10/09 06:55
這有三種可能: 1. Apple的記憶體管理做的還不夠好, 這個我不清楚他怎麼實現的, 無法評論. 2. 每個App都說書他還要看 (或正在看), 所以iPhone無法清空書櫃, 導致新書放不下, 這時就要手動把一些佔著書櫃的App刪除, 讓iPhone能把他的Memory清空. 3. 有些App有Memory leak, 他丟了一些書上書櫃, 然後他就忘了. 因為iPhone不知道他還要不要, 不敢把書放回去. 因此我沒有說"不能"清空記憶體, 但在做之前請先知道自己在做什麼XD 因為很多朋友清空記憶體的原因是"記憶體快用完了, 所以清一下會比較快". ※ 編輯: denru01 (76.24.28.34), 10/09/2016 07:01:09
imgkiller: 然後如果平時就只用一些陽春的app,從沒遇過閃退,那也 10/09 06:58
imgkiller: 確實就沒清空的必要。不過我還蠻常遇到閃退還是跑得很 10/09 06:59
imgkiller: 慢的情況 10/09 06:59
jimmy4f207: 推 10/09 07:14
darkjustice: 推! 10/09 07:38
PPTer: 現在出版社的書愈來愈厚 結果書店還不准人家直接搬回家 10/09 08:12
PPTer: 還要叫黑貓來送才准你買 X 10/09 08:13
PPTer: 所以 android是指都把新書放在樓上 舊書不拿出來的意思嗎? 10/09 08:17
jamo423: 推 講的很清楚 10/09 08:30
CloudPigLee: 推淺顯易懂的比喻~ 10/09 08:39
MicroEric: 推 講得很好 觀念正確 10/09 08:42
ITOMima: 謝謝淺顯易懂解釋 10/09 08:55
MakiseKurisu: 讓我有點想到最近學到的清記憶體方式LRU 10/09 09:09
denru01: 哈 本來也想講一下LRU, 但想說這畢竟不是在介紹 10/09 09:16
denru01: eviction rule的文章... 10/09 09:17
iamheavy: RAM本來就是拿來用的 很多人都是拿來看的 10/09 09:28
likora: 好酷的分析 我喜歡 一聽就明白了!推! 10/09 09:40
snowgod: 推 10/09 09:52
yea107: 推易懂 10/09 09:53
kenk0818: 推耐心解說! 10/09 09:59
p014737ray: 超棒的耶!推 10/09 10:03
kazake: Push 10/09 10:07
unojazz: 推推 10/09 10:10
s85409: 版上需要更多專業文。推 10/09 10:12
henry1915: 推 10/09 10:16
pm2001: 你要把課本上面那一套寫上來是沒甚麼問題啦 10/09 10:17
pm2001: 實際使用上 有些app你不手動滑掉 就是切換的時候一直重開 10/09 10:17
pm2001: 甚至是閃退 10/09 10:17
課本上寫的就是實際上大家用的方式, 當然各家有自己的獨門密技跟管理方式, 但基本上大方向是一致的. 至於為什麼要手動滑掉才不會閃退, 我上面已經有提到過了. 另外再重申一次, 我不是說手動清理記憶體不行, 而是你清的時候要知道你到底是在做什麼.
oceanhope: 馬上就瞭解了,解釋得很棒!! 10/09 10:22
pensees: app閃退不見得是RAM的問題。不然為什麼很多app更新就好了 10/09 10:23
iori0888: 原本那篇的問題是背景程式都關閉了,記憶體還是快吃滿, 10/09 10:24
iori0888: 這點如何解釋? 10/09 10:24
iOS不是只有第三方的app, 還有很多的系統服務在運行, 另外, 把背景程式關閉未必需要把他的記憶體清掉, 如果沒別人要用, 又何必急著把他們丟掉呢? 這樣你等一下把app打開時就可以馬上用囉, 反正書櫃很大很夠用呢. 還有個東西叫pre-fetch, 也就是鄉民最愛說的未看先猜, 我猜你等一下要看什麼書, 偷偷幫你拿到書櫃上, 這樣你要看書的時候就馬上可以用囉~ 就干心!
whps5608: 推 10/09 10:25
echo951753: 詳細推 10/09 10:27
yihanderman: 推 10/09 10:30
dtDeam: 易懂推 10/09 10:31
andy086: 推啊超專業 10/09 10:37
din691012: 易懂推 10/09 10:38
awdrgyjilp22: 推 生活分析講解XD 10/09 10:40
venana: 推 簡單易懂 10/09 10:40
Donaldren: 推推 寫到很讚 10/09 10:49
a123454193: 推精闢解析 10/09 10:57
uouo84517: 推 10/09 11:00
zx126126987: iOS確實把記憶體都吃很滿呢… 能跟iOS拼的大概只有HT 10/09 11:07
zx126126987: C的記憶體管理了,三星和華碩都肥豬 10/09 11:07
andy79323: 你提到的是記憶體運作方式沒錯 但是iphone和android多 10/09 11:11
andy79323: 工運作這點沒提到 10/09 11:11
因為我本來就沒打算講他們的多工運作, 這個我也不是很熟, 不能誤導別人.
SDCREW: 超厲害解說,推 10/09 11:13
luoyi: 推 10/09 11:19
flowheart: 書桌的比喻我也很常用,解釋記憶體很方便 10/09 11:22
flowheart: 這種認真文,一定是放假太閒了 10/09 11:23
其實我快忙死了= =+ 只是這種記憶體迷思存在已久, 雖然很多朋友會善意的提醒剩餘記憶體少不代表不好, 但大家在對實際運作不理解的情況下還是"怕怕的". 講到記憶體管理好像很深奧, 但其實並不難懂, 搞懂後就會理解大家為什麼會有前面的結論, 也免去不必要的擔憂. 但這不代表記憶體管理是件簡單的事, 了解最簡單的做法是很容易的, 不過要搞懂甚至想出來更有效率的方法就很困難了, 也是很多研究人員花費數十年心力才能弄出來的東西.
a87992772: 聽不進去還是一樣..... 10/09 11:41
ATand: 早年系統是爛到明明只要一頁資料卻把整本書拿來還不放回 10/09 11:44
ATand: 去 10/09 11:44
※ 編輯: denru01 (76.24.28.34), 10/09/2016 11:50:53
arthur641987: 你書櫃系? 10/09 11:47
RINPE: 推 最近在學 這篇簡單好懂 10/09 12:07
kumaso: 讚 簡單易懂 10/09 12:09
feverup: 可以搭電梯嗎(來亂的) 10/09 12:11
LyingOtaku: 推 10/09 12:18
skyslee: 推用心! 10/09 12:21
Eaque: 一看就懂 10/09 12:34
bedbrpaco: 本來就懂不過你解釋的真好!哈哈 10/09 12:44
berserkman: 深入淺出的解釋,超讚! 10/09 12:48
wowhahaha: 推 好舉例 10/09 12:49
silomin: 推認真 10/09 12:52
BigBananaBoy: 蠻清楚的~ 10/09 12:58
sidedmood: 推感謝 10/09 12:59
Rammus1111: 我跪著看這篇啊...受益良多感謝 10/09 13:01
david757: 好文推! 10/09 13:03
pttyzf: 推 10/09 13:11
roix: 推深入淺出 10/09 13:15
zy116pj: 推推 10/09 13:45
assblack: 問一下flash跟手機容量是一樣的嗎 10/09 13:49
基本上是一樣的, 現在手機的主要儲存空間都是用flash. 這東西可以做很大, 可惜他速度慢, 只好靠記憶體的幫忙了.
brady9870: 覺得黏在書櫃的比喻真好XD 10/09 13:55
tornado1621: 推 一堆不懂記憶體的在那邊擔心 10/09 13:57
appleceo: Memory hierarchy 10/09 14:11
amwkscl: 出到iphone7果迷終於開始討論記憶體了XDDDDDDDDD 10/09 14:12
amwkscl: 等到iphone8,果迷就可以上到CPU的課了~ 10/09 14:13
是可以來聊一下CPU, 但用個手機還要了解CPU怎麼運作也太累了XD
pulululu: 看好久XD 10/09 14:21
YibolaSkin: 你圖書系? 10/09 15:00
remember17: 推!!! 10/09 15:12
andy93197: 推! 10/09 15:28
abc255699: 只能推了 10/09 15:40
maxw1102: 原來如此 長知識了 10/09 16:11
Trickfirst: 推 深入淺出又精闢詳細 10/09 16:35
afalcon: 有學習有推 10/09 17:01
lwecloud: 我以為清MEMORY是卓粉最愛做的事耶wwww 10/09 17:35
ysru: 推 10/09 17:39
Vipasyin: 以為清記憶體是安卓專用+1 10/09 17:43
acrrtpc: 推 10/09 17:47
s85409: apple在處理資源分配跟能耗。簡直是外星科技 10/09 17:57
s85409: 不然為啥安卓廠要不斷提昇硬體效能來彌補跟ios的差距 10/09 17:57
Google跟各大Android廠也不是吃素的, 但是因為他的硬體實在是太多變, 設計的困難度自然比Apple有限的硬體變化來的困難的多, 加上Android的系統給App比較大的自由度, 比方說真多工, 造成記憶體的管理上更加困難, 不過表相上確實Apple的記憶體管理是做的比較好的.
ChungLi5566: 我公司的AIX Server也是記憶體90%在使用 10/09 18:06
ChungLi5566: 在Server的世界 記憶體很貴 買了卻不用才奇怪 10/09 18:07
Server記憶體的價格跟其它的零組件比已經變的非常便宜了, 隨便一台Server的記憶體大小都比我自己桌機的SSD還大XDD
raylee40509: 漲姿勢 10/09 18:20
gossipking: 這篇文章的比喻好可愛 推!! 10/09 18:24
tncshes86608: ㄊㄨㄟ 10/09 19:06
wosopu: 推 10/09 21:07
a58524andy: 求二的意思~~ 10/09 21:26
james7923: 理論上不清理記憶體應該會比較省電 APP就不必一直重啟 10/09 22:15
cth3844: 好文!! 10/09 22:18
k078787878: 讚 10/09 23:41
lataisme: 推 謝謝分享 10/10 00:40
aday: 推 10/10 03:36
※ 編輯: denru01 (76.24.28.34), 10/10/2016 04:41:37
ds1441: 錯誤類比 10/10 07:21
Allen1124: 推 好文 ! ! ! 10/10 13:43
barrybonds: 看完給一個推 10/10 14:41
tom89427: 鞭辟入裡 10/10 15:58
phcno9999: 就買plus加大書櫃 10/10 16:34
TaylorNatume: 推 這解說太強了! 10/11 09:45
morgan860320: 推解釋 10/11 15:18
shihhhpin: 推推淺顯易懂解釋 10/11 15:47
z8632100: 推 03/08 07:42