国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS學習系列08 - 內存分配

_ang / 2951人閱讀

摘要:本文會同步到我的個人網站中。將他們放在堆中是為了不影響棧的效率。而是通過引用的方式查找到堆中的實際對象再進行操作。相對于簡單數據類型而言,簡單數據類型就比較穩定,并且它只占據很小的內存。

本文會同步到我的個人網站中。

在ECMAScript中,變量可以存放兩種類型的值

原始值

引用類型值

原始值指的是代表原始數據類型的值,例如:undefined null number string boolean

引用類型指的是復合類型值,例如:object function array 自定義對象

堆和棧

棧是一種LIFO的數據結構,即后進先出,隊列是一種FIFO的數據結構,即先進先出

堆是基于散列算法存放數據的一種數據結構

原始值是存放在棧中的簡單數據段,它們的值直接存儲在變量訪問的位置,例如:

var num = 10;      //變量名num和初始化值10都存放在棧中

引用值是存放在堆中的對象,引用值的變量名是一個存放在棧中指針,指向堆中的引用值對象,例如:

var obj = new object();    //變量名obj存放在棧中,而它指向的object()對象是存放在堆中的

為什么原始值要放在棧中,引用值要放在堆中?

先看一段代碼

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,"笨蛋的座右銘",25);

內存分析

原始類型變量num bol str的變量名和內容都存放在棧中

引用類型變量obj arr person的變量名作為指針存放在棧中,指向堆中的變量內容

由上圖可以看出,我們不能直接操作堆中的數據,也就是說不能直接操作對象,但我們可以通過棧中存放的變量指針來進行操作

為什么要分堆和棧

堆比棧大,棧比堆的運算速度快,對象是一個復雜的結構,并且可以自由擴展,如:數組可以無限擴充,對象可以自由添加屬性。將他們放在堆中是為了不影響棧的效率。而是通過引用的方式查找到堆中的實際對象再進行操作。相對于簡單數據類型而言,簡單數據類型就比較穩定,并且它只占據很小的內存。不將簡單數據類型放在堆是因為通過引用到堆中查找實際對象是要花費時間的,而這個綜合成本遠大于直接從棧中取得實際值的成本。所以簡單數據類型的值直接存放在棧中

總結

兩種變量類型:原始值和引用類型值

變量在內存中的存放位置分為堆和棧

歡迎關注我的公眾號

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107848.html

相關文章

  • 我的阿里之路+Java面經考點

    摘要:我的是忙碌的一年,從年初備戰實習春招,年三十都在死磕源碼,三月份經歷了阿里五次面試,四月順利收到實習。因為我心理很清楚,我的目標是阿里。所以在收到阿里之后的那晚,我重新規劃了接下來的學習計劃,將我的短期目標更新成拿下阿里轉正。 我的2017是忙碌的一年,從年初備戰實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。然后五月懷著忐忑的心情開始了螞蟻金...

    姘擱『 評論0 收藏0
  • 【譯】JavaScript是如何工作的:內存管理 + 如何處理4個常見的內存泄露

    摘要:本文作為第三篇,將會討論另一個開發者容易忽視的重要主題內存管理。我們也會提供一些關于如何處理內存泄露的技巧。這是當前整型和雙精度的大小。然而,這是一組可以收集的內存空間的近似值。 本文轉載自:眾成翻譯譯者:Leslie Wang審校: 為之漫筆鏈接:http://www.zcfy.cc/article/4211原文:https://blog.sessionstack.com/how-j...

    IntMain 評論0 收藏0
  • java 基礎 - 收藏集 - 掘金

    摘要:基礎知識復習后端掘金的作用表示靜態修飾符,使用修飾的變量,在中分配內存后一直存在,直到程序退出才釋放空間。將對象編碼為字節流稱之為序列化,反之將字節流重建成對象稱之為反序列化。 Java 學習過程|完整思維導圖 - 后端 - 掘金JVM 1. 內存模型( 內存分為幾部分? 堆溢出、棧溢出原因及實例?線上如何排查?) 2. 類加載機制 3. 垃圾回收 Java基礎 什么是接口?什么是抽象...

    makeFoxPlay 評論0 收藏0
  • 渣渣為什么要看 ElasticSearch 源碼?

    摘要:當時自己在本地測試搭建集群后,給分配了另外一個任務就是去了解中的自帶分詞英文分詞中文分詞的相同與差異以及自己建立分詞需要注意的點。還有就是官網的文檔了,非常非常詳細,還有,版本的是有中文的官方文檔,可以湊合著看。 前提 人工智能、大數據快速發展的今天,對于 TB 甚至 PB 級大數據的快速檢索已然成為剛需,大型企業早已淹沒在系統生成的浩瀚數據流當中。大數據技術業已集中在如何存儲和處理這...

    Cciradih 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<