3 回答

TA貢獻(xiàn)1795條經(jīng)驗 獲得超7個贊
Android應(yīng)用程序(非系統(tǒng)應(yīng)用程序)可以使用的最大內(nèi)存量(以兆字節(jié)為單位/占總RAM的百分比)是多少?
這因設(shè)備而異。getMemoryClass()onActivityManager將為您提供運(yùn)行代碼的設(shè)備的值。
Android版本之間有什么區(qū)別嗎?
是的,這些年來,對操作系統(tǒng)的要求不斷增加,并且設(shè)備必須進(jìn)行調(diào)整以匹配。
關(guān)于設(shè)備制造商是否存在差異?
是的,只要制造商制造設(shè)備,并且大小隨設(shè)備而異。
在確定應(yīng)用程序可以使用多少RAM時,要考慮哪些“附帶因素”?
我不知道什么是“附帶條件”。
早期的設(shè)備每個應(yīng)用程序的上限為16MB;后來的設(shè)備增加到24MB或32MB
沒錯。屏幕分辨率是一個重要的決定因素,因為更大的分辨率意味著更大的位圖,因此平板電腦和高分辨率手機(jī)將傾向于具有更高的值。例如,您將看到具有48MB堆的設(shè)備,并且如果有更高的值,我也不會感到驚訝。
應(yīng)用程序怎么可能超過該限制?
您假設(shè)該應(yīng)用程序的作者知道他在做什么??紤]到Android核心工程師難以確定應(yīng)用程序的內(nèi)存使用情況,因此我不認(rèn)為所討論的應(yīng)用程序必須提供特別準(zhǔn)確的結(jié)果。
話雖如此,本機(jī)代碼(NDK)不受堆限制。而且,從Android 3.0開始,應(yīng)用程序可以請求“大堆”,通常在數(shù)百M(fèi)B范圍內(nèi),但是對于大多數(shù)應(yīng)用程序來說,這是較差的形式。
此外,我注意到當(dāng)使用大約30-40 MB時,我的某些應(yīng)用程序會因OutOfMemoryException崩潰。
請記住,Android垃圾收集器不是壓縮垃圾收集器。確實應(yīng)該有例外CouldNotFindSufficientlyLargeBlockOfMemoryException,但這可能被認(rèn)為太羅y了。OutOfMemoryException意味著您不能分配所請求的塊,而不是您已經(jīng)用盡了整個堆。
- 3 回答
- 0 關(guān)注
- 806 瀏覽
添加回答
舉報