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

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

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

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

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

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

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

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

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

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

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

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

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

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

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

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

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

Java

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

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

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

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

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

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

Objective-C

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

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

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

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


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

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

  嗯~

Java:

  優(yōu)點(diǎn):

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

  缺點(diǎn):

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

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

Objective-C:

  優(yōu)點(diǎn):

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

  缺點(diǎn):

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

上一篇:聯(lián)想智能電視50s9近期反饋及建議
下一篇:聯(lián)想的智能電視支持WPT直播了
沙發(fā)
發(fā)表于 2015-2-18 01:25 | 只看該作者 | 來自內(nèi)蒙古
好糾結(jié)斤斤計(jì)較健健康康咔咔咔哦哦哦哦開機(jī)
板凳
發(fā)表于 2015-2-18 14:02 | 只看該作者 | 來自山東
強(qiáng)烈支持樓主ing……
地板
發(fā)表于 2015-2-18 15:13 | 只看該作者 | 來自云南
強(qiáng)烈支持樓主ing……
5#
發(fā)表于 2015-2-18 16:27 | 只看該作者 | 來自上海
學(xué)習(xí)學(xué)習(xí)!
6#
發(fā)表于 2015-2-18 23:50 | 只看該作者 | 來自四川
強(qiáng)烈支持樓主ing……
7#
發(fā)表于 2015-2-20 23:52 來自ZNDS手機(jī)版 | 只看該作者 | 來自湖北
支持,謝謝分享
8#
發(fā)表于 2015-2-21 19:11 | 只看該作者 | 來自陜西
學(xué)習(xí)學(xué)習(xí)!
9#
發(fā)表于 2015-2-21 20:27 來自ZNDS手機(jī)版 | 只看該作者 | 來自浙江
非常感謝樓主
10#
發(fā)表于 2015-2-21 20:46 來自ZNDS手機(jī)版 | 只看該作者 | 來自浙江
好好好好好好好好
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(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)督舉報(bào):report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

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