日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

「字符串」存在「棧內(nèi)存」?那我可要杠你了哦!

來源: 責(zé)編: 時(shí)間:2024-03-27 17:39:54 198觀看
導(dǎo)讀前言大家好,我是林三心,用最通俗易懂的話講最難的知識點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心。在我們的認(rèn)知里:基礎(chǔ)類型存棧內(nèi)存,引用數(shù)據(jù)類型存堆內(nèi)存。const a = '林三心'const b = { age: 18, height: 180}

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心。MKZ28資訊網(wǎng)——每日最新資訊28at.com

在我們的認(rèn)知里:基礎(chǔ)類型存棧內(nèi)存,引用數(shù)據(jù)類型存堆內(nèi)存。MKZ28資訊網(wǎng)——每日最新資訊28at.com

const a = '林三心'const b = {    age: 18,    height: 180}

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

超長字符串

大家都知道,字符串屬于基礎(chǔ)類型,所以大家會覺得字符串是存在棧內(nèi)存中的,但是大家要知道,V8默認(rèn)棧內(nèi)存是984Kib,那如果一個(gè)超長字符串 > 984Kib能裝的進(jìn)棧內(nèi)存嗎?這也就是一個(gè)比較經(jīng)典的問題——大象裝箱問題,試問:一頭大象能裝進(jìn)一個(gè)小箱子里嗎?MKZ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

一探究竟

堆快照

先來看一段代碼MKZ28資訊網(wǎng)——每日最新資訊28at.com

const func = function() {  this.str1 = '林三心'  this.str2 = 'Sunshine_Lin'}const a = new func()const b = new func()

然后咱們來看看堆快照的詳情MKZ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

上面的結(jié)果可以看出:MKZ28資訊網(wǎng)——每日最新資訊28at.com

  • a 和 b的str1都指向同一個(gè)地址
  • a 和 b的str2都指向同一個(gè)地址

那我們可不可以猜測出一個(gè)結(jié)論:字符串的內(nèi)容存于堆內(nèi)存中,指針存于棧內(nèi)存中,且相同的字符串指向同一個(gè)堆內(nèi)存地址MKZ28資訊網(wǎng)——每日最新資訊28at.com

修改和新增字符串

我們稍微修改下代碼MKZ28資訊網(wǎng)——每日最新資訊28at.com

const func = function() {  this.str1 = '林三心'  this.str2 = 'Sunshine_Lin'}const a = new func()const b = new func()// 修改str1a.str1 = '哈哈哈哈哈哈哈哈哈哈'// 新增str3,跟str2一樣a.str3 = 'Sunshine_Lin'

再來看看現(xiàn)階段的堆快照的詳情MKZ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

上面的結(jié)果可以看出:MKZ28資訊網(wǎng)——每日最新資訊28at.com

  • str1修改成一個(gè)新的字符串后,重新開辟了一個(gè)內(nèi)存空間(新地址)
  • str3新增之后,指針指向已有的Sunshine_Lin的內(nèi)存空間

那我們可不可以猜測出一個(gè)結(jié)論:新增或者修改字符串后,如果是一個(gè)之前不存在的字符串,則新開辟內(nèi)存空間,如果是已有的,則直接使用已有的內(nèi)存空間MKZ28資訊網(wǎng)——每日最新資訊28at.com

源碼分析

當(dāng)我們聲明一個(gè)字符串時(shí):MKZ28資訊網(wǎng)——每日最新資訊28at.com

  • 1、v8內(nèi)部有一個(gè)名為stringTable的hashmap緩存了所有字符串,在V8閱讀我們的代碼,轉(zhuǎn)換抽象語法樹時(shí),每遇到一個(gè)字符串,會根據(jù)其特征換算為一個(gè)hash值,插入到hashmap中。在之后如果遇到了hash值一致的字符串,會優(yōu)先從里面取出來進(jìn)行比對,一致的話就不會生成新字符串類。
  • 2、緩存字符串時(shí),根據(jù)字符串不同采取不同hash方式。

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

源碼

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片MKZ28資訊網(wǎng)——每日最新資訊28at.com

通俗易懂總結(jié)

字符串的數(shù)據(jù)存于 堆內(nèi)存 中,棧內(nèi)存 中只是存其 地址指針MKZ28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)我們新建一個(gè)字符串時(shí),V8會從內(nèi)存中查找一下是否已經(jīng)有存在的一樣的字符串,找到的話直接復(fù)用。如果找不到的話,則開辟一塊新的內(nèi)存空間來存這個(gè)字符串,并把地址賦給變量。MKZ28資訊網(wǎng)——每日最新資訊28at.com

大家有沒有想過,為什么字符串不能通過下標(biāo)索引來進(jìn)行修改呢?因?yàn)樽址男薷谋举|(zhì)上只能是通過整個(gè)的修改,而不能局部修改。MKZ28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-79841-0.html「字符串」存在「棧內(nèi)存」?那我可要杠你了哦!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: ZGC可伸縮低延遲垃圾收集器深度解析

下一篇: 聊聊Flink:這次把Flink的觸發(fā)器(Trigger)、移除器(Evictor)講透

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 三言兩語說透設(shè)計(jì)模式的藝術(shù)-單例模式

    寫在前面單例模式是一種常用的軟件設(shè)計(jì)模式,它所創(chuàng)建的對象只有一個(gè)實(shí)例,且該實(shí)例易于被外界訪問。單例對象由于只有一個(gè)實(shí)例,所以它可以方便地被系統(tǒng)中的其他對象共享,從而減少
  • 多線程開發(fā)帶來的問題與解決方法

    使用多線程主要會帶來以下幾個(gè)問題:(一)線程安全問題  線程安全問題指的是在某一線程從開始訪問到結(jié)束訪問某一數(shù)據(jù)期間,該數(shù)據(jù)被其他的線程所修改,那么對于當(dāng)前線程而言,該線程
  • 最“俊美”淘寶賣家,靠直播和短視頻圈粉,上架秒光,年銷3000萬

    來源 | 電商在線文|易琬玉編輯|斯問受訪店鋪:Ringdoll戒之人形圖源:微博@御座的黃山、“Ringdoll戒之人形”淘寶店鋪有關(guān)外貌的評價(jià),黃山已經(jīng)聽累了。生于1985年的他,哪
  • 自律,給不了Keep自由!

    來源 | 互聯(lián)網(wǎng)品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時(shí)不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財(cái)經(jīng)無忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對于自己的“今天”,百度也很迷茫。“新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來一個(gè) 1。”這是2022年底,李彥宏
  • 2299元起!iQOO Pad開啟預(yù)售:性能最強(qiáng)天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會,除了首發(fā)安卓最強(qiáng)旗艦處理器的iQOO Neo8系列新機(jī)外,還在發(fā)布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • iQOO Neo8系列今日官宣:首發(fā)天璣9200+ 全球安卓最強(qiáng)芯!

    在昨日舉行的的聯(lián)發(fā)科新一代旗艦芯片天璣9200+的發(fā)布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發(fā)搭載這款當(dāng)前性能最強(qiáng)大的移動平臺
  • Meta盲目擴(kuò)張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創(chuàng)意日前,Meta創(chuàng)始人兼CEO 馬克·扎克伯發(fā)布公開信,宣布Meta計(jì)劃裁員超11000人,占其員工總數(shù)13%。他公開承認(rèn)了自己的預(yù)判失誤:“不僅
Top 主站蜘蛛池模板: 沙坪坝区| 砚山县| 陆良县| 万年县| 油尖旺区| 北川| 贺兰县| 牟定县| 灌云县| 米泉市| 舟山市| 临武县| 辛集市| 柘城县| 托克逊县| 宁化县| 长葛市| 晋州市| 泊头市| 贵德县| 台东县| 舒城县| 桐庐县| 荥阳市| 分宜县| 鞍山市| 隆化县| 武清区| 江油市| 中牟县| 大石桥市| 右玉县| 江津市| 繁峙县| 灵川县| 晋城| 鄄城县| 武定县| 武山县| 泸溪县| 陵川县|