用于排查 内存不足、连续大块分配失败、地址空间碎片、保留区过大和内存增长。不用临时编写 VirtualQuery 扫描代码。
只查询当前或指定 x86 进程的区域元信息,不读取目标内存内容,不触碰保护页,不分配、释放或修改目标内存。基础 process 不需要修改。
import process.memoryMap;
var report,err = process.memoryMap.diagnose();
if(!report) return {error=err};
return report;
null / 省略目标参数只表示执行代码的当前进程,不是父进程或宿主。指定其他进程时传正整数 PID,或有效的 process 对象。
查看简短文本,并评估新预留 128 MiB 连续地址空间:
import process.memoryMap;
var mm = process.memoryMap;
var report,err = mm.diagnose(,{
requestBytes = 128 * 1048576;
top = 5;
resolveNames = true;
threadCount = true;
});
if(!report) return {error=err};
return {text=mm.format(report); complete=report.complete};
先看 complete,再看 findings、summary、request。 采集失败返回 null,err;扫描中途停止仍返回已采集的数据,但 complete=false。排行榜的 displayTruncated 只表示展示截断,不代表扫描不完整。
| 任务 | 入口 |
|---|---|
| AI 首次诊断、需要简短报告 | diagnose(target, options) |
| 保存地址布局、之后对比 | snapshot(target, options) |
| 离线分析已有快照 | analyze(snapshot, options) |
| 查看操作前后的变化 | diff(before, after, options) |
| 解释一个地址的页状态、保护、分配基址 | query(target, address, options) |
| 将已有结果显示成 CRLF 文本 | format(result) |
所有结果均为可 JSON 序列化的数据表,无须调用 close / free。库另开只查询/同步权限的句柄并自行关闭,不接管调用者的进程句柄。库不会提升权限;无权查询时直接返回错误。
MEM_COMMIT 区域字节数不是驻留 RAM;private.virtualBytes 包含仅保留空间。PAGE_GUARD 的分配不一定是线程栈;增长也不是泄漏证明。版本:0.1.0。首版仅实现 x86 目标;已在 Windows 11 x64 + 32 位 aardio 验证。64 位、ARM32、ARM64 目标明确拒绝,不会静默只扫描低 4 GiB。LAA 查询依赖 Native API,失败时拒绝猜测范围;详见兼容边界。