Skip to content

大页内存(HugePage)

大页内存(2 MiB/页)可以减少内存管理开销、提升虚拟机性能。在部分机型上,它还是虚拟机能否正常启动的关键。DroidVM 通过 gh-hugepage-reserve 内核模块来预留和管理这块内存池。

HugePage 管理

📷 截图位置:HugePage 管理界面

前提:安装模块

需要先安装 gh-hugepage-reserve Magisk 模块。没装的话打开界面会弹窗提示,点 下载 跳转 GitHub 获取。安装并重启后即可使用。

池大小

池大小 就是给虚拟机预留多少大页内存。填好点保存:

  • 能立即生效时提示「已保存并应用」
  • 不能立即生效时提示「已保存(重启后生效)」

两个限制

  • 池大小不能小于正在运行的虚拟机内存总和
  • 正在「获取」时不能缩小,要等获取完成

获取大页

获取大页

📷 截图位置:获取 v1/v2/v3 按钮与池占用进度条

刚设好池大小时,内存往往还没真正凑齐(界面显示「等待获取」)。获取 就是让模块去把物理内存凑成连续的大页。有三种方式,点一下即可执行,执行中再点可以停止:

方式做法特点
获取 v1直接扫描空闲内存收集大页最温和,但能凑到的量最少
获取 v2先把其它 App 挤到 swap/zram,再收集更有效,会影响后台 App
获取 v3精准挑选页面逐块挤到 zram,再收集最能凑够量

结果会告诉你达成了多少:凑够显示「获取完成」,凑不够会显示实际达成量和目标量。

建议

先试 v1,不够再用 v2v3。挤到 swap/zram 会让后台 App 被杀或变慢,这是正常代价。

CMA(把闲置内存借给 App)

预留的大页平时闲着也是浪费。开启 启用 CMA 后,闲置部分会以 CMA 形式借给普通 App 用,需要时再通过「获取」拿回来。需要模块 v10 以上。

打开时可能会提示该厂商内核默认不让 App 使用 CMA,此时有两个选择:

选择说明
模块 CMA只建立保留区,不改内核,没有崩溃风险。只有内核本来就允许时 App 才用得上;无论如何保留区仍能服务虚拟机
移除 CMA 限制额外解除内核限制,任何 App 都能用保留区。部分设备可能崩溃重启

「移除限制」怎么安全试

它会先应用但 不保存。成功了再选择保存,让每次开机都生效;崩溃了直接重启即可恢复,因为没保存。

查看状态与占用

界面会实时刷新池状态:模块状态、已分配 / 已回收次数、活动虚拟机数,以及可用 / 总量进度条(开启 CMA 后会区分「可用」「CMA」「CMA(借出)」)。

显示占用 可以看到具体是哪些进程、哪台虚拟机占了多少页。

其它按钮

按钮说明
回收手动触发回填池
启用 / 停用模块开机是否加载模块(重启生效)
加载 / 停止内核模块立即加载,或直接 rmmod 卸载
崩溃警告卡片上次启动崩溃时显示,点击消除

卸载模块的影响

卸载会释放全部预留页,并丢失每虚拟机的占用跟踪,正在运行且用了大页的虚拟机可能受影响。

在虚拟机中启用

池准备好后,在 创建/编辑虚拟机 → 基础标签 中开启 大页内存,并选择 预分配大页方式

  • 分块(≤256 MiB,默认):推荐,兼容性好
  • 单次:整块借出
  • 禁用:不预分配

注意

大页会从系统里预留出物理内存,留太多会挤占可用内存。不用的时候记得把模块停用并停止,把内存还给系统。少数机型可能因此引发内核崩溃,请谨慎使用。

基于 GNU GPL v3.0 许可证发布