• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > javascript内存分配原理实例分析

javascript内存分配原理实例分析

作者:布瑞泽的童话 字体:[增加 减小] 来源:互联网 时间:2017-05-11

布瑞泽的童话通过本文主要向大家介绍了javascript经典实例,javascript实例,javascript实例大全,javascript项目实例,javascript实例教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了javascript内存分配原理。分享给大家供大家参考,具体如下:

JavaScript中的变量分为两种,原始值和引用值。原始值指的是原始数据类型的值,比如undefined,null,number,string,boolean类型所表示的值。引用值指的是复合数据类型的值,即Object,Function,Array等。

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

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

我们来看一段代码:

function Person(id,name,age){
this.id = id;
this.name = name;
this.age = age;
}
var num = 10;
var bol = true;
var str = "abc";
var obj = new Object();
var arr = ['a','b','c'];
var person = new Person(100,"jxl",22);
</div>

再看看内存分析图:

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

栈的优势就是存取速度比堆要快,仅次于直接位于CPU中的寄存器,但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,垃圾收集器会自动地收走这些不再使用的数据,但是缺点是由于在运行时动态分配内存,所以存取速度较慢。

所以相对于简单数据类型而言,他们占用内存比较小,如果放在堆中,查找会浪费很多时间,而把堆中的数据放入栈中也会影响栈的效率。比如对象和数组是可以无限拓展的,正好放在可以动态分配大小的堆中。

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

希望本文所述对大家JavaScript程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • javascript 中的继承实例详解
  • JavaScript通过改变文字透明度实现的文字闪烁效果实例
  • JavaScript实现的选择排序算法实例分析
  • JavaScript队列的应用实例详解【经典数据结构】
  • javascript内存分配原理实例分析
  • javascript防篡改对象实例详解
  • javascript实现table单元格点击展开隐藏效果(实例代码)
  • javascript中this用法实例详解
  • javascript 网页进度条简单实例
  • JavaScript实现二分查找实例代码

相关文章

  • 2017-05-11.net MVC+Bootstrap下使用localResizeIMG上传图片
  • 2017-05-11详解nodejs中的process进程
  • 2017-05-11JS简单判断字符在另一个字符串中出现次数的2种常用方法
  • 2017-05-11原生js实现商品放大镜效果
  • 2017-05-11nodejs基础应用
  • 2017-05-11一篇文章搞定JavaScript类型转换(面试常见)
  • 2017-05-11js记录点击某个按钮的次数-刷新次数为初始状态的实例
  • 2017-09-02JavaScript类与封装
  • 2017-05-11js操作浏览器的参数方法
  • 2017-05-11Vue.js仿Metronic高级表格(二)数据渲染

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Bootstrap3多级下拉菜单
    • js事件冒泡与事件捕获详解
    • BootStrap 弹出层代码
    • Javascript基础回顾之(二) js作用域
    • jquery实现异步加载图片(懒加载图片一种方式)
    • JS实现隔行换色的表格排序
    • 原生js实现放大镜效果
    • jquery+ajax实现省市区三级联动效果简单示例
    • 一道面试题引发的对javascript类型转换的思考
    • 使用 NodeJS+Express 开发服务端的简单介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有