内存管理

1.前端为什么要关注内存

  • 任何一个程序的运行都需要分配的内存空间,而任何一个页面, 如果一些不需要的内存没有得到及时的释放,我们称之为内存泄漏,一次内存泄漏可能不会造成大的问题,但是内存泄漏堆积就会造成内存溢出
  • 防止页面占用内存过大,引起客户端卡顿,甚至无响应
  • Nodejs 使用V8引擎,内存对于后端服务的性能至关重要,因为后端服务的持久性,后端更容易造成内存溢出

 

 

2..js数据类型与js内存机制

  • 原始数据类型: 字符串(String),数字(Number),布尔(Boolean),空对象(Null), 未定义(Undefined), Symbol
  • 引用数据类型: Object
  • 内存空间: 栈内存(stack), 堆内存(heap)
  • 栈内存: 栈只能从栈顶单向传给栈底,原始数据类型的大小是固定的
  • 堆内存:对于数组和对象的大小是不固定的
 
3.垃圾回收机制
  • 找出那些不再接着使用的变量,然后释放其所占用的内存,垃圾回收器会按照固定的时间间隔周期性地执行这一操作
  • js使用垃圾回收机制来自动管理内存,垃圾回收是一把双刃剑
优势:可以大幅简化程序的内存管理代码,降低程序员的负担,减少因长时间运转而带来的内存泄漏问题
不足:意味着程序员将无法掌控内存,js没有暴露任何关于内存的api,我们无法强迫其进行垃圾回收更无法干预内存管理
 
4.V8引擎的内存管理机制
限制内存的原因:
  • V8最初为浏览器而设计,不太可能遇到大量内存的使用场景
  • 防止因为垃圾回收所导致的线程暂停执行的时间太长
 
posted @ 2020-02-21 15:17  W同学  阅读(101)  评论(0编辑  收藏  举报