堆栈图详解代码块+图片

超详细堆栈图以及销毁的两种方法(包含堆栈图)

我先把代码和堆栈图贴上去然后再说说注意点把!
代码图:
堆栈图详解代码块+图片_第1张图片
堆内存图、
堆栈图详解代码块+图片_第2张图片
栈内存图:
堆栈图详解代码块+图片_第3张图片
上面的图我解释一下:当person赋值给animal,animal和person都是指向同一个对象的。
然后 animal.setName(“鬼谷子”);修改了name的属性为鬼谷子。每次执行完以后都会销毁
每次函数执行完成之后栈都会被销毁。

再来说说栈,堆,数据段

1)栈

​ 执行函数才会产生栈,当函数执行结束后栈就会销毁
​ 函数执行过程中,产生的局部变量就在栈中,栈中的局部变量都是有名字的,使用名字来操作局部变量
​ 如果没有执行函数,是不会产生栈的。

2)堆

1,对象是保存在堆中的。所有的对象都被保存在堆中
​ 2,堆中中开辟的内存是不会被操作销毁的。但是js和java有垃圾回调用制,会对没有被任何变量引用的对象进行自动销毁。
​ 3.堆中的对象是没有名字的,但是有一个引用值。
​ 4.怎样理解window(在打开浏览器的时候,window对象自动创建,(这里说window对象是不规范的,因为堆是没有名称的)浏览器没有关闭,那么window对象就永不销毁)

3)数据段

数据段一开辟出来就不会被销毁。

垃圾回收机制

垃圾回收机制也称作为GC,每隔一段时间就去回收一次,就好比城市里面的垃圾车一样。

你可能感兴趣的:(JavaScript)