• 9

iphone清除記憶體功能?

原則上就繼續順順用吧
linblake wrote:
在網路上看到一個清...(恕刪)
89.. wrote:
但iPhone就是沒有背景執行這種東西
電腦記憶體用完
程式也不會閃退
閃退是程式出錯
使用到未配置的非法空間導致
開發過程式的就會知道
哪怕記憶體有100G
只要記憶體位址寫錯就會閃退


很巧的小弟就是寫手機App的
iPhone不是沒有背景程式
只是幾乎都由系統Services集中控管但是隨著功能越多
系統自己的Services也越來越多相對的也越來越肥大當然對於
算算從iOS4一路以來加了多少Services吧,
這種早期Ram 256 512的越來越負荷不了iOS7之後的系統核心

閃退有很多種原因,大部分是因為App沒寫好是沒錯
但是有種閃退叫OOM
那OOM成因就是使用過多的記憶體常見原因就這幾種
1. 是系統開發者對於記憶體使用沒控管好超出系統限制而被強制回收
2. 系統記憶體不足,強制回收層級較低的App維持系統運作
3. 記憶體損毀

其實每次看到一堆人不懂在神話iPhone
什麼iPhone沒背景執行這種東西...

只是因為iOS在開發上做很多限制與控管,還有使用Services集中控管部分功能
讓使用者的App占用記憶體盡量最小化,在近Suspended時把資料存到記憶體
他只是相對於Android少很多...
原理bluesystem大有講解,不過應該不是說我吧~
我前面是比喻系統本身越來越肥大的情況不是說記憶體管理


如果這麼厲害...我手上的6s plus記憶體也不用2G了256MB就夠了吧

黃金獵獵犬 wrote:
閃退有很多種原因,大部分是因為App沒寫好是沒錯
但是有種閃退叫OOM
那OOM成因就是使用過多的記憶體常見原因就這幾種
1. 是系統開發者對於記憶體使用沒控管好超出系統限制而被強制回收
2. 系統記憶體不足,強制回收層級較低的App維持系統運作
3. 記憶體損毀



跟記憶體不足沒關係

iOS硬體就擺在哪邊不會變了
如果在iPhone上遇到記憶體不足
在跑simulator時就已經遇到了

所以唯一的可能就是記憶體洩漏


黃金獵獵犬 wrote:
其實每次看到一堆人不懂在神話iPhone
什麼iPhone沒背景執行這種東西...



iOS作業系統本身就會佔用記憶體沒錯
但App就是沒有背景執行這鬼東西

iOS原生只佔用500MB
那就是永遠都佔用500MB
不會因為你多開幾個App就有所變化
開發者在跑simulator的時候也早就知道這500MB不能用
超過了就是開發者的問題
跟背景App無關
因為根本沒有背景App


黃金獵獵犬 wrote:

如果這麼厲害...我手上的6s plus記憶體也不用2G了256MB就夠了吧



邏輯錯誤
不管有沒有背景程式
記憶體大一點總是好的

記憶體需求大不代表就有背景App好嗎?
89.. wrote:
iOS原生只佔用500MB
那就是永遠都佔用500MB
開發者在跑simulator的時候也早就知道這500MB不能用
超過了就是開發者的問題
跟背景App無關
因為根本沒有background App
.(恕刪)


呵呵~原來iOS原生只佔用500MB,那就是永遠都佔用500MB
呵呵~ background Services最好都不用多吃資源
呵呵~當background Services要過多的記憶體時
層級較低的App要跟系統要記憶體要不到就會產生等待
或是系統需要記憶體而把層級較低的App回收
這點我在iPhone4 更新iOS7~8之後越來越明顯
尤其是看網頁或是看影片這種吃記憶體的App較容易發生


89.. wrote:
不會因為你多開幾個App就有所變化

當然不會有變化阿,系統層級較高的當然優先使用記憶體
使用者自己安裝的層級較低當然優先回收,使用者的App只有被回收的份
況且iOS在週期設計上有強制開發者把資料儲存,如果要背景執行特定的東西,
就去跟相關的系統Services註冊,例如notification Services之類的東西
就算是User App 事實上還是有背景執行的狀態,但是系統限制是十分鐘

89.. wrote:
跟背景App無關
因為根本沒有背景App

呵呵~淺談iOS應用程式背景執行(一) - 在有限時間內在背景執行任意工作

89.. wrote:
但iPhone就是沒有背景執行這種東西

呵呵~沒有從背景執行改沒有成背景App
我還想說沒背景執行是當背景Services都死了
真的沒有背景執行...我想手機應該是不能用的吧
我想你不懂有很多background Services在運行
iOS4~iOS9加了多少功能自己去數數...
然後再算一下那些需要 background Services


89.. wrote:
在跑simulator時就已經遇到了

模擬器畢竟是模擬器,有時候並不能完全複製使用者的行為
因為模擬器是乾淨的...隨便去問一間公司敢模擬器跑跑完全沒跑過實機測試就上架嗎?

89.. wrote:

邏輯錯誤
不管有沒有背景程式
記憶體大一點總是好的

記憶體需求大不代表就有背景App好嗎?


邏輯錯誤
記憶體大需要成本
那為什麼要增加?
當然因為有需求才增加
補充一點,那些到背景的App並不是完全釋放記憶體,他其實還是會吃一點記憶體
而且我從來都沒說跟背景App有關
我是說背景"執行"...你要自行腦補就...

算了...你說沒有就沒有吧~我繼續看看笑笑就好
那之前新聞所說Facebook在背景執行撥影片
把電耗光的狀況,是什麼樣的機制?

照前幾位有在寫程式的先進所說,只要按Home鍵
程式就不會在背景執行,理論上就不會耗電
如下連結
http://www.bnext.com.tw/article/view/id/3768

我不是資訊背景,真心求教
黃金獵獵犬 wrote:
呵呵~原來iOS原生只佔用500MB,那就是永遠都佔用500MB
呵呵~ background Services最好都不用多吃資源
呵呵~當background Services要過多的記憶體時
層級較低的App要跟系統要記憶體要不到就會產生等待
或是系統需要記憶體而把層級較低的App回收
這點我在iPhone4 更新iOS7~8之後越來越明顯
尤其是看網頁或是看影片這種吃記憶體的App較容易發生



當然是

iOS最大佔用記憶體是固定的
剩下的才是App使用
跑simulator的時候就會知道了

iOS最大佔用記憶體本來就考慮系統服務滿載的情況


App沒有層級高低
只有前景跟背景之分

背景App基本上就是關閉狀態
記憶體隨時可以被iOS回收

「the background state is just a brief stop on the way to the app being suspended.」

黃金獵獵犬 wrote:
當然不會有變化阿,系統層級較高的當然優先使用記憶體
使用者自己安裝的層級較低當然優先回收,使用者的App只有被回收的份
況且iOS在週期設計上有強制開發者把資料儲存,如果要背景執行特定的東西,
就去跟相關的系統Services註冊,例如notification Services之類的東西
就算是User App 事實上還是有背景執行的狀態,但是系統限制是十分鐘


那十分鐘是給App儲存資料然後關閉使用的
iOS的設計就是
除了系統保留記憶體外
其他全部是前景App使用


所以你開了100個程式
99個背景都不會佔用任何記憶體


黃金獵獵犬 wrote:
呵呵~沒有從背景執行改沒有成背景App
我還想說沒背景執行是當背景Services都死了
真的沒有背景執行...我想手機應該是不能用的吧
我想你不懂有很多background Services在運行
iOS4~iOS9加了多少功能自己去數數...
然後再算一下那些需要 background Services


我一開始就說沒有背景執行的程式
我可沒說OS不會背景執行

背景服務佔用記憶體最大值早就被系統保留了
所以根本不必考慮


黃金獵獵犬 wrote:
模擬器畢竟是模擬器,有時候並不能完全複製使用者的行為
因為模擬器是乾淨的...隨便去問一間公司敢模擬器跑跑完全沒跑過實機測試就上架嗎?



非也

模擬器只給你有限的記憶體
系統保留的記憶體是不能動用的

換句話說
模擬器給的是背景服務全載的情況
如果模擬器上沒問題
實機也不該出現記憶體不足的問題


黃金獵獵犬 wrote:
邏輯錯誤
記憶體大需要成本
那為什麼要增加?
當然因為有需求才增加
補充一點,那些到背景的App並不是完全釋放記憶體,他其實還是會吃一點記憶體
而且我從來都沒說跟背景App有關
我是說背景"執行"...你要自行腦補就...

算了...你說沒有就沒有吧~我繼續看看笑笑就好



你還是邏輯錯誤
記憶體有需求
就代表一定有背景App??

如果說是背景服務
那本來就是屬於系統保留記憶體
App本來就不該去使用系統保留的配額


再說一次
記憶體變大不代表就一定是有背景執行
沒有os的系統也會需要更大的記憶體
這兩者毫無相關

littlewolf wrote:
那之前新聞所說Facebook在背景執行撥影片
把電耗光的狀況,是什麼樣的機制?

照前幾位有在寫程式的先進所說,只要按Home鍵
程式就不會在背景執行,理論上就不會耗電
如下連結
http://www.bnext.com.tw/article/view/id/3768

我不是資訊背景,真心求教



App本身不能背景執行
必須註冊OS服務才行
OS會幫忙App做背景更新

因為有OS背景服務
你才會收到簡訊、電話、推播通知
而這些東西的確也會耗電的



iOS的記憶體可以想成有兩塊(以iPhone 4, 512MB為例)

系統記憶體(200M): OS系統專用,包含背景服務,最大值是固定在200MB
App記憶體(300M): App專用,只用前景App可使用(背景App只能用10分鐘)

由此可知
沒有背景App在背後一直跑
自然也就沒有記憶體不足的可能

iOS保證了前景App至少有300MB的記憶體可用
不用擔心背景App的數量
因為根本沒有背景App
89.. wrote:
OS最大佔用記憶體是固定的
剩下的才是App使用
跑simulator的時候就會知道了

iOS最大佔用記憶體本來就考慮系統服務滿載的情況


App沒有層級高低
只有前景跟背景之分

背景App基本上就是關閉狀態
記憶體隨時可以被iOS回收


呵呵~你大概不懂...其實手機就是一堆App跟Services所組成的吧...
當然在User App沒什麼高低層級之分只有前景跟背景
你不知道有System App這種東西...那就真的沒什麼好討論的了

89.. wrote:
「the background state is just a brief stop on the way to the app being suspended.」


suspended本來就是等待回收或是等待喚醒隨時可以被回收的啊...
請問你是否有沒有看清楚我前面打的...或是你可以選擇把完整的敘述看完

89.. wrote:
那十分鐘是給App儲存資料然後關閉使用的
iOS的設計就是
除了系統保留記憶體外
其他全部是前景App使用


所以呢?所以呢?這就不是background?
你App是有多少資料要存,存十分鐘10G嗎?


iOS入門幾乎都會看到的一張圖~原來background是錯覺啊

89.. wrote:

所以你開了100個程式
99個背景都不會佔用任何記憶體

呵呵... Suspended會吃記憶體喔
只有到了Not running才叫完全不會吃記憶體

前面一堆邏輯錯誤到我懶得點出來了...既然邏輯錯誤,那當然看不懂我打的Orz
那後面沒有花時間看的價值
拜託你去看官方文件好嗎?話說~人家問的問題完全沒回答到...自顧自的講真的是...
黃金獵獵犬 wrote:
所以呢?所以呢?這就不是background?
你App是有多少資料要存,存十分鐘10G嗎?


當然沒那麼多阿?
看App而定

這不是背景
這只是停止前的存檔動作而以

10分鐘跟10GB有什麼關係?
這邏輯....



黃金獵獵犬 wrote:
iOS入門幾乎都會看到的一張圖~原來background是錯覺啊


很多初學者看到這張圖會以為iOS有背景App
沒錯
這就是錯覺!!

「the background state is just a brief stop on the way to the app being suspended.」

iOS跟電腦不一樣
沒有背景程式會一直在背後佔用資源!


黃金獵獵犬 wrote:
呵呵... Suspended會吃記憶體喔
只有到了Not running才叫完全不會吃記憶體


沒錯
但不影響前景App


黃金獵獵犬 wrote:
前面一堆邏輯錯誤到我懶得點出來了...既然邏輯錯誤,那當然看不懂我打的Orz
那後面沒有花時間看的價值
拜託你去看官方文件好嗎?話說~人家問的問題完全沒回答到...自顧自的講真的是...


是你整個搞錯方向了
iOS就是沒有背景App
你找了一堆資料也只是打自己臉
沒有的東西就是沒有
  • 9
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 9)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?