JS里的内存机制

作者: z_yyy | 来源:发表于2018-11-16 10:09 被阅读8次

数据的存储方式

JS引擎将内存分为代码区和数据区,其中,数据区分为 Stack(栈内存) 和 Heap(堆内存)。简单类型的数据直接存在 Stack 里,复杂类型的数据是把 Heap 地址存在 Stack 里。

垃圾回收

当我们申明变量、函数、对象的时候,系统会自动为他们分配内存。而当一个变量、函数、对象不再被引用时,他们就是垃圾,将被回收。

内存泄漏

由于一些浏览器的bug,使本应被标记为垃圾的数据没有被标记为垃圾,内存会被永久占用。

解决方法是将页面关闭前将所有内容置为null

window.onunload = function(){
  document.body.onclick = null;
}

关于内存的题目

var a = 1
var b = a
b = 2
请问 a 显示是几?  

此时a的值不受b影响,所以
a === 1
var a = {name: 'a'}
var b = a
b = {name: 'b'}
请问现在 a.name 是多少?

此时,b指向一个新的对象,a值不受影响,所以
a.name === 'a'
var a = {name: 'a'}
var b = a
b.name === 'b'
请问现在 a.name 是多少?

此时,a,b指向的对象中name的值改变,所以
a.name = 'b'
var a = {name: 'a'}
var b = a
b = null
请问现在 a 是什么?

此时,a值不受影响,所以
a === {name: 'a'}
var a = {n:1};  
var b = a; 
a.x = a = {n:2};  

此时 a.x 中的 a 指的仍是之前的地址,而 a = {n:2}中的 a 指的是新的地址

alert(a.x);
alert(b.x);

所以
a.x === undefined
b.x === { n: 2 } 

相关文章

  • JS里的内存机制

    数据的存储方式 JS引擎将内存分为代码区和数据区,其中,数据区分为 Stack(栈内存) 和 Heap(堆内存)。...

  • js内存泄露

    js内存泄露 js内存的机制 js的基本变量 boolean string number null undefin...

  • js知识版图-数据类型

    一、js中内存分为栈内存、堆内存此处引申知识点:js中堆栈内存及函数处理机制 栈内存 从数据类型角度思考 栈内存 ...

  • 前端面试-JS垃圾回收机制

    什么是垃圾回收机制? JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在...

  • JS垃圾回收机制

    JS的内存生命周期: 分配你所需要的内存 使用分配到的内存(读、写) 不需要时将其释放、归还 js垃圾回收机制: ...

  • 垃圾回收机制

    概述 JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制...

  • JS 里垃圾回收机制是什么,常用的是哪种,怎么处理的?

    JS 的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是...

  • 2018-10-13

    浅谈浏览器的垃圾回收机制和内存泄露 JavaScript使用垃圾回收机制来自动管理内存。 JS的回收机制分两种:1...

  • Js/1 堆栈内存/变量提升和闭包

    1# Js数据类型渲染机制和堆栈内存 Js 文件的放置位置 head 头部 body 底部(推荐) Js 的 ...

  • JS中的基本数据类型与所在内存空间那些事

    一、内存空间 为了便于理解,我们暂且先将Js的内存分为栈内存和堆内存。 JavaScript具有垃圾自动回收机制,...

网友评论

    本文标题:JS里的内存机制

    本文链接:https://www.haomeiwen.com/subject/bpypfqtx.html