前端开发那些事儿

v8引擎 - 内存

2021-08-04  本文已影响0人  JX灬君

1. 在node中查看内存

proces.memoryUsage()

rss -> 分配堆内存大小
heapTotal -> 堆内存占用大小
heapUsed -> 堆内存中所有变量内存占用大小(heapTotal的子集)
external -> 进程使用到的系统链接库所占用的内存
arrayBuffers -> 内存之中的一段二进制数据

image.png

2. 通过浏览器查看内存

window.performance

jsHeapSizeLimit -> js堆内存限制为多大
totalJSHeapSize -> js变量用了多少内存
usedJSHeapSize -> js堆内存已经用了多少


image.png

3. 让内存溢出


// 查看内存占用情况
getMemory = () => {
let memory = process.memoryUsage()
let format = (bytes) => ${(bytes / 1024 / 1024).toFixed(2)}MB;
console.log(heapTotal:${format(memory.heapTotal)}\theadUsed:${format(memory.heapUsed)});
}
let count = 0
let useMem = () => {
// 初始化一个超大的数
let size = 20 * 1024 * 1024
let arr = new Array(size)
console.log(count ++ );
return arr
}
// 定义一个全局的变量来接收超大的数组
let total = []
for (let i = 0; i < 30; i++) {
getMemory()
total.push(useMem())
}
console.log('success');


循环25次后,内存在4195.36MB爆掉。

image.png

4. 解除内存限制(一般用于已知的需要大文件上传或者占用大内存node服务的情况)

新生代内存拓展:max-new-space-size=1024;// 单位KB
老生代内存拓展:max-old-space-size=4096;// 单位MB
让内存溢出的任务继续执行:

node --max-old-space-size=6096 test.js  

解除限制到6096MB后代码成功执行。


image.png

5.变量处理

上一篇 下一篇

猜你喜欢

热点阅读