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可以看(我不维护,看不见了就是我删了) 链接

相关推荐
顾安r1 小时前
11.8 脚本网页 星际逃生
c语言·前端·javascript·flask
im_AMBER2 小时前
React 17
前端·javascript·笔记·学习·react.js·前端框架
一雨方知深秋2 小时前
2.fs模块对计算机硬盘进行读写操作(Promise进行封装)
javascript·node.js·promise·v8·cpython
顺凡4 小时前
删一个却少俩:Antd Tag 多节点同时消失的原因
前端·javascript·面试
前端大卫4 小时前
动态监听DOM元素高度变化
前端·javascript
Cxiaomu4 小时前
React Native App 图表绘制完整实现指南
javascript·react native·react.js
qq. 28040339845 小时前
vue介绍
前端·javascript·vue.js
Mr.Jessy5 小时前
Web APIs 学习第五天:日期对象与DOM节点
开发语言·前端·javascript·学习·html
速易达网络6 小时前
HTML<output>标签
javascript·css·css3
!win !7 小时前
前端跨标签页通信方案(上)
前端·javascript