console.memory不是标准API,而是Chromium早期内部调试属性,未被任何浏览器正式支持;可靠方式是使用performance.memory(需HTTPS/localhost、非无痕模式),或Chrome DevTools Memory面板进行专业内存分析。

console.memory 不是用于“查看堆内存占用”的常规方法,它本身**不是标准 API**,也不属于 console 对象的规范接口。在绝大多数浏览器(如 Chrome、Firefox、Safari)中直接调用 console.memory 会报错:undefined 或 not a function。
真正可用的是 window.performance.memory
Chrome(基于 Blink 内核)和 Edge(新版)在启用内存信息权限后,支持通过 performance.memory 获取 JS 堆内存快照,前提是:
- 页面运行在 本地文件(file://)或 HTTPS 协议下(HTTP localhost 通常也允许);
- 未处于无痕/隐私模式(部分版本会禁用);
- 开发者工具已打开过一次内存面板(某些旧版 Chrome 有此依赖)。
使用方式很简单:
if (performance.memory) {
console.log('JS 堆总量:', Math.round(performance.memory.totalJSHeapSize / 1024 / 1024 * 100) / 100 + ' MB');
console.log('JS 堆已使用:', Math.round(performance.memory.usedJSHeapSize / 1024 / 1024 * 100) / 100 + ' MB');
console.log('JS 堆限制:', Math.round(performance.memory.jsHeapSizeLimit / 1024 / 1024 * 100) / 100 + ' MB');
} else {
console.warn('performance.memory 不可用(可能因协议、浏览器或设置限制)');
}
为什么不能依赖 console.memory?
console.memory 是早期 Chromium 内部调试用的非公开属性,从未进入 Web 标准,也未被任何浏览器正式实现为 console 方法。网上部分教程误将其当作可用 API,实为混淆了控制台自动补全提示或旧版 DevTools 的内部命令(如 copy(console.memory) 在某些调试环境下看似有效,但本质是 DevTools 注入的临时对象,不可靠且随时可能失效)。
更可靠、实用的内存观测方式
- Chrome DevTools → Memory 面板:录制堆快照(Heap Snapshot)、时间线(Allocation Timeline)、分配采样(Allocation Sampling),可精准定位内存泄漏和大对象;
- performance.memory + 定时轮询:适合简单监控(如每秒打点),但注意该值只反映 V8 堆,不含 DOM、WebAssembly 或渲染进程内存;
-
Node.js 环境用
process.memoryUsage():服务端 JS 可获取 RSS、heapTotal、heapUsed 等指标; - 避免手动轮询 performance.memory 频繁触发 GC 干扰:该属性读取本身开销小,但高频采集(如
小结
没有 console.memory 这个标准方法。想看 JS 堆内存,请用 performance.memory(仅 Chromium 系主流支持),并配合 DevTools 的 Memory 面板做深度分析。别被错误示例误导——检查前先 console.log(performance.memory) 确认是否存在,再决定是否采用。











