首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 30258|回復(fù): 15
上一主題 下一主題
[分享]

內(nèi)存回收機制哪家強?android及ios內(nèi)存回收機制優(yōu)劣對比

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2015-2-18 00:15 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式 | 來自江蘇
來點漲姿勢的吧。

  現(xiàn)在電視市場的新品非常非常少,就算是發(fā)布新品也圍繞著處理器核心和屏幕分辨率進(jìn)行的。

  而手機市場上卻又辣么辣么多的新品發(fā)布,動不動就是2K屏幕、8核心及3G內(nèi)存。

  說到內(nèi)存,各位使用過安卓設(shè)備的朋友一定希望安卓系統(tǒng)的內(nèi)存越大越好。但反觀來看,蘋果的設(shè)備內(nèi)存卻一直為此在1GB呢?(新出的ipad air2為2GB內(nèi)存,但是可以暫時不提。)

  其實這是安卓系統(tǒng)及ios系統(tǒng)內(nèi)存回收機制的區(qū)別。

  所以,本篇就來點漲姿勢的內(nèi)容吧:內(nèi)存回收機制哪家強?android及ios內(nèi)存回收機制優(yōu)劣對比。

  其實探討到內(nèi)存回收機制,不得不得到雙方的開發(fā)平臺:java和Objective-C。

Java

  Java里內(nèi)存的回收是由JVM虛擬機控制的,回收時間及回收量完全是由JVM決定。優(yōu)勢是攻城獅完全不用操心內(nèi)存泄露的問題和非法訪問。

  簡而言之是Android所有可用的內(nèi)存僅限于系統(tǒng) RAM,當(dāng) Android 應(yīng)用程序退出時,并不清理其所占用的內(nèi)存,Linux 內(nèi)核進(jìn)程也相應(yīng)的繼續(xù)存在,所謂“退出但不關(guān)閉”。從而使得用戶調(diào)用程序時能夠在第一時間得到響應(yīng)。當(dāng)系統(tǒng)內(nèi)存不足時,系統(tǒng)將激活內(nèi)存回收過程。為了不因內(nèi)存回收影響用戶體驗(如殺死當(dāng)前的活動進(jìn)程)。

  回收過程就是GC,具體可以描述為:

內(nèi)存回收機制哪家強?android及ios內(nèi)存回收機制優(yōu)劣對比
  內(nèi)存回收的線程:主線程變成→低線程;單線程變成→多線程

  內(nèi)存回收時機:App空閑時、可用內(nèi)存少時、分配大內(nèi)存空間不夠時

  內(nèi)存回收方式:無分代技術(shù),一次性GC所有對象;分代技術(shù),分為年輕、老年代、持久代。

Objective-C

  Objective-C的內(nèi)存回收方式是引用計數(shù)的內(nèi)存回收方式。凡是繼承NSObject的類生成的對象,當(dāng)對象的計數(shù)為0,會對對象執(zhí)行dealloc并回收。引用計數(shù)有個缺點,無法解開循環(huán)引用。設(shè)想對象A引用B, B引用A,兩個對象計數(shù)都不為零,結(jié)果無法回收A和B,于是內(nèi)存泄漏掉了。

  這也是為什么樓主認(rèn)識的一些攻城獅經(jīng)常吐槽給ios開發(fā)程序很麻煩的原因,但是很鍛煉技術(shù)。

內(nèi)存回收機制哪家強?android及ios內(nèi)存回收機制優(yōu)劣對比
對比Java的情況:

內(nèi)存回收機制哪家強?android及ios內(nèi)存回收機制優(yōu)劣對比
內(nèi)存回收機制哪家強?android及ios內(nèi)存回收機制優(yōu)劣對比


  Java用樹描繪了對象間的引用關(guān)系。GC的任務(wù)就是把圖中沒有任何引用的對象B們找出來,刪掉。什么算法?似乎跟不同的實現(xiàn)有關(guān),我也沒深入研究。JVM依賴樹的結(jié)構(gòu)來尋找垃圾,而Objective-C則只關(guān)心引用計數(shù),“樹”只是個附產(chǎn)品。

  好了。 廢話了這么多,能到關(guān)鍵內(nèi)容了么?

  嗯~

Java:

  優(yōu)點:

  攻城獅不需要關(guān)心循環(huán)引用導(dǎo)致的內(nèi)存泄露,減輕了負(fù)擔(dān)

  缺點:

  1. 很難控制內(nèi)存的釋放時機

  2. 所有線程都要暫停以便GC。GC時間可能會很長,導(dǎo)致系統(tǒng)會很長

Objective-C:

  優(yōu)點:

  內(nèi)存釋放及時、平滑,時機可控

  缺點:

  不小心就寫出內(nèi)存泄漏,要時刻保持清晰的對象間聯(lián)系

上一篇:聯(lián)想智能電視50s9近期反饋及建議
下一篇:聯(lián)想的智能電視支持WPT直播了
沙發(fā)
發(fā)表于 2015-2-18 01:25 | 只看該作者 | 來自內(nèi)蒙古
好糾結(jié)斤斤計較健健康康咔咔咔哦哦哦哦開機
回復(fù) 支持 反對

使用道具 舉報

板凳
發(fā)表于 2015-2-18 14:02 | 只看該作者 | 來自山東
強烈支持樓主ing……
回復(fù) 支持 反對

使用道具 舉報

地板
發(fā)表于 2015-2-18 15:13 | 只看該作者 | 來自云南
強烈支持樓主ing……
回復(fù) 支持 反對

使用道具 舉報

5#
發(fā)表于 2015-2-18 16:27 | 只看該作者 | 來自上海
學(xué)習(xí)學(xué)習(xí)!
回復(fù) 支持 反對

使用道具 舉報

6#
發(fā)表于 2015-2-18 23:50 | 只看該作者 | 來自四川
強烈支持樓主ing……
回復(fù) 支持 反對

使用道具 舉報

7#
發(fā)表于 2015-2-20 23:52 來自ZNDS手機版 | 只看該作者 | 來自湖北
支持,謝謝分享
回復(fù) 支持 反對

使用道具 舉報

8#
發(fā)表于 2015-2-21 19:11 | 只看該作者 | 來自陜西
學(xué)習(xí)學(xué)習(xí)!
回復(fù) 支持 反對

使用道具 舉報

9#
發(fā)表于 2015-2-21 20:27 來自ZNDS手機版 | 只看該作者 | 來自浙江
非常感謝樓主
回復(fù) 支持 反對

使用道具 舉報

10#
發(fā)表于 2015-2-21 20:46 來自ZNDS手機版 | 只看該作者 | 來自浙江
好好好好好好好好
回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-10-18 18:18 , Processed in 0.076924 second(s), 18 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表