手机版

javascript内存分配原理示例分析

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

本文说明了javascript内存分配的原理。分享给大家参考,如下:

JavaScript中有两种变量:原值和参考值。原始值是指原始数据类型的值,如undefined、null、number、string、boolean类型。引用值是指复合数据类型的值,即对象、函数、数组等。

原始值和引用值分别存储在堆栈和堆中。原始值是存储在堆栈中的简单数据段,它们的值直接存储在变量访问的位置。引用值是存储在堆中的对象。

堆栈中存储的值是指向堆中存储的实际对象的指针。

让我们看一段代码:

函数Person(id,姓名,年龄){ this.id=idthis.name=namethis.age=年龄;} var num=10var bol=truevar str=' abcvar obj=新对象();var arr=['a ',' b ',' c '];var person=new Person(100,' jxl ',22);查看内存分析图表:

从上图中,我们不能直接操作存储在堆栈中的数据,但是我们可以通过堆栈中的引用来操作对象。那么为什么要分开呢?它们不是都存储在内存中吗?

栈的优点是访问速度比堆快,仅次于直接位于CPU中的寄存器,缺点是必须确定栈中数据的大小和寿命,缺乏灵活性。堆的优点是可以动态分配内存大小,生存期不需要提前告诉编译器。垃圾收集器会自动收集这些未使用的数据,但缺点是由于运行时内存的动态分配,访问速度较慢。

因此,与简单的数据类型相比,它们占用的内存更少。如果把它们放在堆里,会浪费很多时间去找它们,把堆里的数据放到栈里也会影响栈的效率。例如,对象和数组可以无限扩展,并且它们被放置在可以动态分配大小的堆中。

更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript数学运算用法总结》、0103010

希望本文对JavaScript编程有所帮助。

版权声明:javascript内存分配原理示例分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。