javascript 内存管理

javascript 内存管理

前言:为什么要管理内存?
浏览器端:因为内存过大会让浏览器压力过大,导致浏览器卡顿。

node端:内存如果不够,服务就会被中断。

1.栈内存 堆内存 的理解

前端项目优化必然要了解内存占比,先说说我们平时是如何使用内存的吧。

基本类型:存放在占内存。
引用类型:值存在堆内存,变量名存在栈内存,变量名的值指向堆内存的地址。

这里直接上图方便大家的理解。

在这里插入图片描述

2. 新生代 老生代

在64位电脑下 新生代有32M 老生代有1.4G

新生代:新生代的工作过程就是把32M平分成2个16M的储存空间,先在第一个储存,当快满的时候找到第一个里面的可执行垃圾回收的,进行回收,然后把剩下的不可回收的放在第二个储存空间,最后把第一储存空间清空,再把第二个储存空间变为第一个。这样一直循环。

老生代:64位下1.4G 32位下700M。

老生代回收分为三步:
1,标记已死变量
2,清楚已死变量
3,整理磁盘。

新生代和老生代如何转变?

1,新生代发现本次复制后,会占用超过百分之25的空间
2 这个对象已经经历过一次回收。

什么时候触发回收

1.执行完一次代码

2 内存不够的时候。

浏览器检测内存:window.performance.memory

node端检测内存:process.memoryUsage()
Node端可以设置内存-  node --max-old-space-size=1000  storage.js 和node --max-new-space-size=500 storage.js

回收的时候是阻塞式的,也就是进行垃圾回收的时候会中断代码的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值