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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java

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

  簡(jiǎn)而言之是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)存回收過(guò)程。為了不因內(nèi)存回收影響用戶體驗(yàn)(如殺死當(dāng)前的活動(dòng)進(jìn)程)。

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

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

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

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

Objective-C

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

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

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

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


  Java用樹(shù)描繪了對(duì)象間的引用關(guān)系。GC的任務(wù)就是把圖中沒(méi)有任何引用的對(duì)象B們找出來(lái),刪掉。什么算法?似乎跟不同的實(shí)現(xiàn)有關(guān),我也沒(méi)深入研究。JVM依賴樹(shù)的結(jié)構(gòu)來(lái)尋找垃圾,而Objective-C則只關(guān)心引用計(jì)數(shù),“樹(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í)間可能會(huì)很長(zhǎng),導(dǎo)致系統(tǒng)會(huì)很長(zhǎng)

Objective-C:

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

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

  缺點(diǎn):

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

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

本版積分規(guī)則

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

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

GMT+8, 2025-1-8 02:36 , Processed in 0.072912 second(s), 14 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

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