快捷搜索:  xxx  www.ymwears.cn

Oculus简述64位Quest App的优势,相比32位可大大缓解

原标题:Oculus简述64位QuestApp的上风,比拟32位可大年夜大年夜缓解内存压力

(映维网2019年12月24日)现在OculusQuestAPK必须兼容ARM64,而Oculus开拓者关系工程师GaborSzauer日前撰文概述了64位之于32位的上风。下面是映维网的详细收拾:

这篇博文探究了切换到64位版本时的内存相关上风。只管64位无法赞助你得到更多的物理内存,但改为64位有助于缓解内存压力,并使得利用法度榜样的运行加倍稳定。下面我们经由过程Android物理内存和虚拟内存之间的关系来解释缘故原由。

Android操作系统为每个利用法度榜样供给自己的内存视图,这便是所谓的虚拟内存。内存的虚拟视图与最大年夜可寻址空间一样大年夜。对付32位利用,这正好是4GiB,物理内存量不会改变这一事实。

对付Quest,内存不分页到磁盘。这意味着可用的物理内存正用于备份当前运行利用的所有虚拟内存。所述物理内存恒定不变,不会由于切换到64位版本而有所不合。改变的是虚拟内存地址空间的大年夜小。

接下来我们来谈谈共享代码。Android加载共享库一次,然后将它们链接到应用共享库的任何利用法度榜样的虚拟地址空间中。例如,Quest视觉系统驻留在内存中一次,但会映射到应用所述视觉系统的每个利用法度榜样的虚拟地址空间中。

示例场景

下面我们来看一个示例场景。假设我们有1GB的共享库代码映射到利用法度榜样的虚拟地址空间中。这时,我们必要斟酌三个紧张事变。首先,我们假设有2.5GiB的物理内存可用;其次,利用法度榜样具有4GiB虚拟地址空间,但映射到虚拟地址空间的共享代码已经用完了此中的1GiB;着末,虚拟地址空间视图与可用物理内存之间存在关系。这一示例开始的状态是3GiB可用虚拟内存视图,此中2.5GiB内存用于物理备份。

一个显着的问题是,利用法度榜样觉得存在3GiB的可用内存,但实际只有2.5GiB的可用物理内存。假如利用法度榜样考试测验分配跨越2.5GiB的内存,届时将由于物理内存不够而崩溃。

假设利用法度榜样最多分配2.5GiB,这时不会耗尽物理内存。假如利用法度榜样可以线性分配与物理可用内存一样多的内存,这没有问题。但假如利用法度榜样考试测验大年夜量分配(并且正在主动开释),则虚拟地址空间将变得碎片化。大年夜多半利用法度榜样会因为内存压力而崩溃,这是由于虚拟地址空间碎片化,而非由于缺少物理内存。

例如,假设有500MiB的虚拟地址范围可用,但分成100个不继续块(每块50MiB)。假如利用法度榜样考试测验分配75MiB,即便存在足够的物理内存来支持所述分配,并且虚拟地址空间具有500MiB的可用总内存,利用同样会崩溃。

对付64位版本,虚拟地址空间为18.4EB。这(险些)打消了虚拟地址空间中的内存压力(内存碎片)。它简化了我们斟酌内存的要领,由于最大年夜的考量是用于支持18.4EB虚拟地址空间的物理内存量。对付变成64位版本,这是一个异常紧张的身分,由于你不再碰到虚拟地址空间碎片所带来的内存压力。

当然,上面只是简化的示例解释。碎片的数量不仅取决于利用法度榜样的分配,而且涉及Android掩护的各类堆。另一个问题是何时物理内存必须备份虚拟分配。然则,上面这个示例概述了64位版本在内存方面的上风(纵然可用物理内存没有增添)。

若存在疑问,请鄙人方评论栏留下你的问题。

原文链接:https://yivian.com/news/70219.html

滥觞:搜狐

您可能还会对下面的文章感兴趣: