3 回答
TA贡献1795条经验 获得超7个赞
Android应用程序(非系统应用程序)可以使用的最大内存量(以兆字节为单位/占总RAM的百分比)是多少?
这因设备而异。getMemoryClass()onActivityManager将为您提供运行代码的设备的值。
Android版本之间有什么区别吗?
是的,这些年来,对操作系统的要求不断增加,并且设备必须进行调整以匹配。
关于设备制造商是否存在差异?
是的,只要制造商制造设备,并且大小随设备而异。
在确定应用程序可以使用多少RAM时,要考虑哪些“附带因素”?
我不知道什么是“附带条件”。
早期的设备每个应用程序的上限为16MB;后来的设备增加到24MB或32MB
没错。屏幕分辨率是一个重要的决定因素,因为更大的分辨率意味着更大的位图,因此平板电脑和高分辨率手机将倾向于具有更高的值。例如,您将看到具有48MB堆的设备,并且如果有更高的值,我也不会感到惊讶。
应用程序怎么可能超过该限制?
您假设该应用程序的作者知道他在做什么。考虑到Android核心工程师难以确定应用程序的内存使用情况,因此我不认为所讨论的应用程序必须提供特别准确的结果。
话虽如此,本机代码(NDK)不受堆限制。而且,从Android 3.0开始,应用程序可以请求“大堆”,通常在数百MB范围内,但是对于大多数应用程序来说,这是较差的形式。
此外,我注意到当使用大约30-40 MB时,我的某些应用程序会因OutOfMemoryException崩溃。
请记住,Android垃圾收集器不是压缩垃圾收集器。确实应该有例外CouldNotFindSufficientlyLargeBlockOfMemoryException,但这可能被认为太罗y了。OutOfMemoryException意味着您不能分配所请求的块,而不是您已经用尽了整个堆。
- 3 回答
- 0 关注
- 771 浏览
添加回答
举报