国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript內(nèi)存分配原理實(shí)例分析

2019-11-19 16:52:16
字體:
供稿:網(wǎng)友

本文實(shí)例講述了javascript內(nèi)存分配原理。分享給大家供大家參考,具體如下:

JavaScript中的變量分為兩種,原始值和引用值。原始值指的是原始數(shù)據(jù)類型的值,比如undefined,null,number,string,boolean類型所表示的值。引用值指的是復(fù)合數(shù)據(jù)類型的值,即Object,Function,Array等。

原始值和引用值存儲(chǔ)在內(nèi)存中的位置分別為棧和堆原始值是存儲(chǔ)在棧中的簡(jiǎn)單數(shù)據(jù)段,他們的值直接存儲(chǔ)在變量訪問的位置引用值是存儲(chǔ)在堆中的對(duì)象

存儲(chǔ)在棧中的值是一個(gè)指針,指向存儲(chǔ)在堆中的實(shí)際對(duì)象。

我們來看一段代碼:

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);

再看看內(nèi)存分析圖:

由上圖可知我們無法直接操作存儲(chǔ)在堆中的數(shù)據(jù),但是我們可以通過棧中的引用來操作對(duì)象。那么為什么要分開呢?不都是存儲(chǔ)在內(nèi)存中嗎?

棧的優(yōu)勢(shì)就是存取速度比堆要快,僅次于直接位于CPU中的寄存器,但缺點(diǎn)是,存在棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性。堆的優(yōu)勢(shì)是可以動(dòng)態(tài)地分配內(nèi)存大小,生存期也不必事先告訴編譯器,垃圾收集器會(huì)自動(dòng)地收走這些不再使用的數(shù)據(jù),但是缺點(diǎn)是由于在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,所以存取速度較慢。

所以相對(duì)于簡(jiǎn)單數(shù)據(jù)類型而言,他們占用內(nèi)存比較小,如果放在堆中,查找會(huì)浪費(fèi)很多時(shí)間,而把堆中的數(shù)據(jù)放入棧中也會(huì)影響棧的效率。比如對(duì)象和數(shù)組是可以無限拓展的,正好放在可以動(dòng)態(tài)分配大小的堆中。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青冈县| 永昌县| 绥江县| 芦山县| 延寿县| 德阳市| 双江| 焉耆| 桂阳县| 长春市| 双桥区| 湖州市| 巧家县| 偏关县| 婺源县| 枝江市| 威信县| 红安县| 鹤峰县| 深圳市| 青田县| 黄大仙区| 随州市| 南汇区| 呈贡县| 贞丰县| 普兰店市| 嘉黎县| 修武县| 静宁县| 连城县| 信宜市| 永胜县| 周至县| 柳林县| 苗栗县| 上犹县| 离岛区| 平原县| 克拉玛依市| 泗洪县|