關於IOS的多工以及記憶體管理

2022-03-27 15:17:25 字數 1151 閱讀 4272

一.看了很多fy為自己的可用記憶體是350mb還是380mb糾結,為了多優化出一點可用記憶體費腦筋。

這種看法是不對的。所謂空載和滿載,是對作業系統來說的。而對於記憶體晶元電路而言,看到的只是0和1,就算是空閒的記憶體單元,也有0和1在裡面,它必須忠實地儲存所有資料,iphone4有512mb的記憶體,只要一開機,晶元就必須一直儲存通電以儲存512mb的資料。不可能會因為作業系統認為有空閒記憶體,就會去切斷那些空閒記憶體單元的電來省電。以電腦為例,你有兩根記憶體條,一開機這兩根記憶體條就得全部通電。不會因為你有大量空閒記憶體,主機板就對其中一條記憶體條斷電,然後再因為系統需要更多的記憶體空間而對其重新加電。

認為記憶體滿載就會增加耗電,仍然是windows的慣性思維。再說一遍:windows系統中,記憶體滿載,系統就會使用硬碟做虛擬記憶體,所以耗電增加並且速度減慢;ios卻不會使用硬碟做虛擬記憶體,而是直接釋放部分後台軟體占用的記憶體,直到記憶體夠分配為止。

因此記憶體空載與滿載,對於ios來說耗電沒有區別。由於記憶體釋放時是直接釋放,其內容直接丟棄而不需要儲存到硬碟(這跟windows不一樣),因此記憶體空載與滿載對ios來說,速度也沒有區別。

三. 部分fy以開不開後台耗電有明顯區別為依據。

關於這一點,我再說一下: 論壇上有人關閉所有後台,關閉通知,甚至開了飛行模式,一晚上待機仍然不見10%以上的電。百思不得其解。也有人什麼都不懂什麼都不管什麼都不關,傻人有傻福,一晚上待機仍然100%的電。

耗電問題因人而異,不能一概而論。 就我自己而言,只開2g訊號待機,開通知,故意留幾個大型遊戲在後台不關閉,一晚上掉1%。事實上,後台遊戲你切換回來,全部會處於暫停狀態,全部得點螢幕上的resume才能繼續,事實就可以說明:遊戲在後台是暫停的。乙個完全暫停的後台任務如果還能讓它繼續跑電做無用功,你也太小看蘋果的系統設計師了。

看看植物戰殭屍的遊戲,切換到後台再切換回來的畫面,看到game paused的字樣沒有?遊戲在後台完全暫停了。知道直到你點resume,才會繼續。 所有支援原生後台的的遊戲,都是這樣。

再看看蘋果官方的權威解釋,大家如果外語還湊合的話,應該能看懂:

executing code in the background四.是不是後台管理是完全多餘的?

by gqzhu

對 iOS 多工的誤解 多工原理

如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...

對 iOS 多工的誤解 多工原理

如今,多工這個有趣特性已經成功整合在裝置中,我們如今使用的智慧型手機完全支援多工,這其中有乙個東西尤其功不可沒。這就是蘋果的iphone手機。ios是使用廣泛的令人驚嘆的作業系統。在2010年之後ios 4 變成了多工作業系統。眾所周知,當你開啟乙個應用程式然後退出,它仍然會保留在後台。當然,這會導...

iOS中的多工

ios7的多工 後台任務 uibackgroundtaskidentifier backgroundupdatetask dispatch async dispatch get global queue dispatch queue priority default,0 void beginback...