JS 如何使用 performance 查看内存

正常情况下我们可以在控制台中查看当前页面或应用程序的内存使用情况

浏览器环境中,你可以使用浏览器的开发者工具Memory来查看内存信息

如果你想在 JavaScript 中获取内存信息并打印到控制台,你可以使用性能 API 中的 memory 或者 measureUserAgentSpecificMemory 属性

查看页面内存占用情况

js 复制代码
console.log(performance.memory);
{
    jsHeapSizeLimit: 4294705152
    totalJSHeapSize: 102883888
    usedJSHeapSize: 87997796
}

jsHeapSizeLimit:JavaScript 堆的大小限制。 totalJSHeapSize:JavaScript 堆的总大小。 usedJSHeapSize:JavaScript 堆的使用大小。

查看特定对象的占用情况

在这里我已经简单给大家封装了一遍

js 复制代码
// 创建一个对象,用于测量其内存消耗
var myObj = { data: 'some data' };

// 在对象上执行一些操作,增加内存消耗
for (var i = 0; i < 100000; i++) {
    myObj['property' + i] = 'value' + i;
}
if (crossOriginIsolated) {
    runMemoryMeasurements(myObj)
} else {
  console.error(
        crossOriginIsolated + ' crossOriginIsolated\n Cross-Origin-Opener-Policy 设置为 same-origin(保护源站免受攻击)\n Cross-Origin-Embedder-Policy 设置为 require-corp(保护源站免受侵害)'
  );
}
function runMemoryMeasurements(obj) {
    const interval = 5000;
    console.log(`下一次测量5 秒.`);
    setTimeout(this.measureMemory(obj), interval);
}

function measureMemory(obj) {
    // 测量对象的内存消耗
    window.performance
     .measureUserAgentSpecificMemory(obj)
     .then(function (bytes) {
       console.log('内存占用:', getFileSize(bytes.bytes));
       runMemoryMeasurements(obj)
     });
}

function getFileSize(size) {
   //把字节转换成正常文件大小
   if (!size) return '';
   var num = 1024.0; //byte
   if (size < num) return size + 'B';
   if (size < Math.pow(num, 2)) return (size / num).toFixed(2) + 'KB'; //kb
   if (size < Math.pow(num, 3))
     return (size / Math.pow(num, 2)).toFixed(2) + 'MB'; //M
   if (size < Math.pow(num, 4))
     return (size / Math.pow(num, 3)).toFixed(2) + 'G'; //G
   return (size / Math.pow(num, 4)).toFixed(2) + 'T'; //T
}

可以把vconsole打开,方便移动端查看

注意⚠️浏览器需要校验crossOriginIsolated: 是一个新的安全特性,用于表示一个页面或者一个 Worker 是否启用了跨域隔离 未配置:会在控制台提示你未开启

怎么开启呢 nginx.conf路由配置模块添加

js 复制代码
  location /origin1 {
      add_header 'Cross-Origin-Embedder-Policy' 'require-corp';
      add_header 'Cross-Origin-Opener-Policy' 'same-origin';   
      ......
  }

woker 中:

js 复制代码
const worker = new Worker('your-worker.js', { crossOriginIsolated: true });
  • 正确开启后如图

这里有个demo可以看(我不维护,看不见了就是我删了) 链接

相关推荐
zhensherlock17 小时前
Protocol Launcher 系列:Beorg 高效任务管理的协议支持
前端·javascript·typescript·node.js·自动化·github·js
ppandss117 小时前
JavaWeb从0到1-DAY3.1- Vue(ii)
前端·javascript·vue.js
M ? A17 小时前
Vue 转 React | VuReact编译工具快速入门
前端·javascript·vue.js·后端·react.js·面试·vureact
qq_4275398317 小时前
iframe 嵌入预览 PDF ,禁用右键菜单、打印下载按钮不展示
前端·javascript·vue.js·pdf
ZC跨境爬虫17 小时前
跟着 MDN 学 HTML day_3:(表单CSS美化实战与盒子模型三大核心属性详解)
前端·javascript·css·html
非科班Java出身GISer17 小时前
ArcGIS Maps SDK for JavaScript 5.0 组件化开发指南
javascript·arcgis·components·arcgis js 组件化·arcgis js5.0·arcgis js5.0初始化
candyTong1 天前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
玩嵌入式的菜鸡1 天前
网页访问单片机设备---基于mqtt
前端·javascript·css
前端一小卒1 天前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端