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

📷 截图位置:HugePage 管理界面
前提:安装模块
需要先安装 gh-hugepage-reserve Magisk 模块。没装的话打开界面会弹窗提示,点 下载 跳转 GitHub 获取。安装并重启后即可使用。
池大小
池大小 就是给虚拟机预留多少大页内存。填好点保存:
- 能立即生效时提示「已保存并应用」
- 不能立即生效时提示「已保存(重启后生效)」
两个限制
- 池大小不能小于正在运行的虚拟机内存总和
- 正在「获取」时不能缩小,要等获取完成
获取大页

📷 截图位置:获取 v1/v2/v3 按钮与池占用进度条
刚设好池大小时,内存往往还没真正凑齐(界面显示「等待获取」)。获取 就是让模块去把物理内存凑成连续的大页。有三种方式,点一下即可执行,执行中再点可以停止:
| 方式 | 做法 | 特点 |
|---|---|---|
| 获取 v1 | 直接扫描空闲内存收集大页 | 最温和,但能凑到的量最少 |
| 获取 v2 | 先把其它 App 挤到 swap/zram,再收集 | 更有效,会影响后台 App |
| 获取 v3 | 精准挑选页面逐块挤到 zram,再收集 | 最能凑够量 |
结果会告诉你达成了多少:凑够显示「获取完成」,凑不够会显示实际达成量和目标量。
建议
先试 v1,不够再用 v2、v3。挤到 swap/zram 会让后台 App 被杀或变慢,这是正常代价。
CMA(把闲置内存借给 App)
预留的大页平时闲着也是浪费。开启 启用 CMA 后,闲置部分会以 CMA 形式借给普通 App 用,需要时再通过「获取」拿回来。需要模块 v10 以上。
打开时可能会提示该厂商内核默认不让 App 使用 CMA,此时有两个选择:
| 选择 | 说明 |
|---|---|
| 模块 CMA | 只建立保留区,不改内核,没有崩溃风险。只有内核本来就允许时 App 才用得上;无论如何保留区仍能服务虚拟机 |
| 移除 CMA 限制 | 额外解除内核限制,任何 App 都能用保留区。部分设备可能崩溃重启 |
「移除限制」怎么安全试
它会先应用但 不保存。成功了再选择保存,让每次开机都生效;崩溃了直接重启即可恢复,因为没保存。
查看状态与占用
界面会实时刷新池状态:模块状态、已分配 / 已回收次数、活动虚拟机数,以及可用 / 总量进度条(开启 CMA 后会区分「可用」「CMA」「CMA(借出)」)。
点 显示占用 可以看到具体是哪些进程、哪台虚拟机占了多少页。
其它按钮
| 按钮 | 说明 |
|---|---|
| 回收 | 手动触发回填池 |
| 启用 / 停用模块 | 开机是否加载模块(重启生效) |
| 加载 / 停止内核模块 | 立即加载,或直接 rmmod 卸载 |
| 崩溃警告卡片 | 上次启动崩溃时显示,点击消除 |
卸载模块的影响
卸载会释放全部预留页,并丢失每虚拟机的占用跟踪,正在运行且用了大页的虚拟机可能受影响。
在虚拟机中启用
池准备好后,在 创建/编辑虚拟机 → 基础标签 中开启 大页内存,并选择 预分配大页方式:
- 分块(≤256 MiB,默认):推荐,兼容性好
- 单次:整块借出
- 禁用:不预分配
注意
大页会从系统里预留出物理内存,留太多会挤占可用内存。不用的时候记得把模块停用并停止,把内存还给系统。少数机型可能因此引发内核崩溃,请谨慎使用。
