理解js的内存处理分配
2018-01-22 14:42
211 查看
js的变量可以存放两种类型,即基本类型和引用类型。
基本类型即:null,number,string,boolean,underfined等
引用类型:array,object,function等
基本类型存放于栈中,而引用类型存放于堆中。
举个例子:
function result(chinese,english,math){
this.chinese = chinese;
this.english = english;
this.math = math;
}
var power = 100%;
var people = true;
var goodstr = "you are right";
var obj = new object();
var arrlist = [1,2,3,4,5];
var result= new result("语文","英语","数学");
于是我们就得到如下的内存分析图:
从上面我们可以看出power,people,goodstr为基本数据类型;他们的值直接就是放在栈中的,而引用类型:obj,arrlist,result,它们引用变量是存放在栈中的,但是它们却是指向堆中的的实际对象。那引用类型为什么要这样子呢?我们从分析图当中也能看到,我们是没有办法直接去操作堆中的数据的,但是我们可以通过栈中,对堆的对象进行引用从而实现对堆中的数据进行操作。
那基本数据类型和引用类型为什么要这样存放呢?那是因为栈比堆的运行速度要快得多,而堆比栈的存储量要大得多。在栈中存储的是相对简单的数据类型,它们是相对比较稳定的,所占用的内存也比较的少。而在堆中查找实际对象的时候是一个比较费时间的过程。
总体而言,我们要学好js,从它的存储机制去了解对我们是很有帮助的。
基本类型即:null,number,string,boolean,underfined等
引用类型:array,object,function等
基本类型存放于栈中,而引用类型存放于堆中。
举个例子:
function result(chinese,english,math){
this.chinese = chinese;
this.english = english;
this.math = math;
}
var power = 100%;
var people = true;
var goodstr = "you are right";
var obj = new object();
var arrlist = [1,2,3,4,5];
var result= new result("语文","英语","数学");
于是我们就得到如下的内存分析图:
从上面我们可以看出power,people,goodstr为基本数据类型;他们的值直接就是放在栈中的,而引用类型:obj,arrlist,result,它们引用变量是存放在栈中的,但是它们却是指向堆中的的实际对象。那引用类型为什么要这样子呢?我们从分析图当中也能看到,我们是没有办法直接去操作堆中的数据的,但是我们可以通过栈中,对堆的对象进行引用从而实现对堆中的数据进行操作。
那基本数据类型和引用类型为什么要这样存放呢?那是因为栈比堆的运行速度要快得多,而堆比栈的存储量要大得多。在栈中存储的是相对简单的数据类型,它们是相对比较稳定的,所占用的内存也比较的少。而在堆中查找实际对象的时候是一个比较费时间的过程。
总体而言,我们要学好js,从它的存储机制去了解对我们是很有帮助的。
相关文章推荐
- C++中malloc/free与new/delete的区别及内存分配失败错误处理
- 内存分配失败处理
- C++中malloc/free与new/delete的区别及内存分配失败错误处理
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- 深入理解Android虚拟机三------内存分配策略
- 深入理解JVM(2)——GC算法与内存分配策略
- c++程序运行时的内存分配【比较好理解】
- 深入理解Java虚拟机笔记---内存分配与回收策略
- 简单理解动态内存分配和静态内存分配的区别
- 【深入理解jvm】内存分配与回收策略
- free如何知道释放内存长度:vs与glibc分配内存时编译器内部处理
- 深入理解JVM之JVM内存区域与内存分配 - HelloCsl
- hive job 提示Invalid sync和 无法分配内存 报错处理
- C语言里的内存分配以及堆栈的理解
- 青蛙的约会||资源控件||内存分配与函数操作||异常处理||Winsock编程
- Tomcat中对内存的分配与溢出的处理办法
- 内存分配失败错误处理
- 当数组元素是应用类型的时候,关于内存分配的理解误区
- 第3章-垃圾收集器与内存分配策略 第4章-虚拟机性能监控与故障处理工具
- 谈一谈js的内存分配