js內存

js在定義變量時完成了內存的分配

?

js具有自動垃圾回收機制,垃圾回收器會每隔固定的一段時間就執行一次釋放操作,即找出那些不再繼續使用的值,釋放其占用的內存

?

js中最常用的是通過標記清除的算法來找到哪些對象是不再繼續使用的,因此a=null只是做了釋放引用的操作,讓a原本對應的值失去引用,脫離執行環境,這個值會在下一次垃圾回收器執行時被找到并釋放,在適當的時候解除引用,是為頁面獲得更好性能的一個重要方式

?

在局部作用域中,當函數執行完畢,局部變量也就沒有存在的必要了,因此垃圾回收器很容易做出判斷并回收。但是全局變量什么時候需要自動釋放內存空間則很難判斷,因此在我們的開發中,需要盡量避免使用全局變量,以確保性能

?

C和C++不同,js沒有在嚴格意義上區分堆內存和棧內存

?

可以粗淺地理解為js的所有數據都存在堆內存中

?

執行上下文在邏輯上實現了堆棧,需要基于堆棧數據結構的思路來理解執行上下文

?

棧空間的存儲原理:先進后出,后進先出

?

js的執行上下文生成之后會創建一個叫變量對象的特殊對象,基本數據類型往往保存在變量對象中

?

嚴格意義上講,變量對象也存在堆內存中,但是變量對象的特殊職能,在理解時仍然與堆內存區分開

?

基礎數據類型都是按值訪問,因此可以直接操作保存在變量中的實際值

?

與其他語言不同,js的引用數據類型,比如數組,值的大小是不固定的,引用數據類型的值是保存在堆內存中的對象,js不允許直接訪問堆內存中的位置,因此不能直接操作對象的堆內存空間,在操作對象時,實際上是在操作對象的引用,而不是實際的對象

?

引用類型的值是按引用訪問的,這里的引用可以粗淺理解為保存在變量對象中的一個地址,該地址與堆內存的實際值相關聯。當要訪問堆內存中的引用數據類型時,實際上是首先從變量對象中獲取該對象的地址引用,然后再從堆內存中取得需要的數據

?

在變量對象中數據發生復制行為時,系統會自動為新的變量分配一個新值

?

引用類型的復制同樣也會為新的變量自動分配一個新的值保存在變量對象中。不同的是,這個新的值,只是引用類型的一個引用地址,當引用地址相同時,盡管它們相互獨立,但在變量對象中訪問到的具體對象實際上是同一個

轉載于:https://www.cnblogs.com/chuanzhi946/p/7111246.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

halcon 圖像差分_Halcon編程-基于紋理的mara檢測

表面瑕疵檢測是機器視覺領域非常重要的一個應用。機器視覺是集光學、機電和計算機三個領域的一門不算新的技術。但目前表面瑕疵檢測在學界主要是計算機專業或者控制專業瞄準圖像處理方向在做,而視覺光學系統這一塊主要是光學工程專業在做。很少有研究者把這三塊都結…

Apache Camel入門

在先前的博文中,我們了解了企業集成模式(EIP)。 現在,在這篇文章中,我們將研究實現這些模式的Apache Camel框架。 關于駱駝: Apache Camel是一個開放源代碼項目,已有將近5年的歷史,…

css 寫打印樣式問題

(1)背景顏色打印不出來問題解決方法 background樣式要加上 !important;color樣式要加上 !important;-webkit-print-color-adjust: exact;然后記得瀏覽器打印設置里面要在“打印背景圖形”前面打勾。 -webkit-print-color-adjust:…

android studio smssdk,SMSSDK for Android 配置

1.集成之前先要申請Mob的appkey與appsecret2.在Mob官網下載最新SDK,解壓后會看到以下目錄結構:SMSSDK下存放的是短信SDK的全部內容。3.在android studio中加入SMS的第三方庫AS版本的SMSSDK目錄下包含以下內容:MobCommons.jar:Mob …

linux后臺不掛斷運行 nohup命令

//后臺常在 退出終端仍然運行 nohup python pyredis.py & nohup輸出重定向到my.log nohup command > my.log 2>&1 &轉載于:https://www.cnblogs.com/plxm/p/8136833.html

Ubuntu 16.04安裝微信

微信沒有出Linux的版本,但是可以通過以下方式解決: 1、使用網頁版,除了沒有公眾號之后,一切都沒問題,包括傳文件等。 網頁登錄地址:https://wx.qq.com/ 2、使用第三方版本,只不過這個是桌面應用…

navision系統和sap區別_SAP那些事-實戰篇-89-淺談金稅接口方案

以前金稅接口這塊一直是銷售顧問在做,雖然和財務相關,也沒有怎么關注。這次項目把金稅接口分到了財務模塊,結果遇到了一些問題,趁此機會把這塊總結一下方案,供各位看官參考。方案1: 文本方案,這…

不變性的來龍去脈

因此,在我的第一篇文章中,我談到了一些構建器模式,并提到了一個非常強大但卻被忽視的概念:不變性。 什么是不可變類? 這只是一個其實例無法修改的類。 類屬性的每個值都在其聲明或其構造函數中設置,并在對…

JavaScript總結(3)

第3章 獲取用戶的輸入 <script>10 intAprompt("請輸入第一個數字","");11 intBprompt("請輸入第二個數字",27);默認是2712 document.write("你輸入的第一個數字是"intA);13 document.write("<…

css書寫規范

在書寫css樣式的時候總是無意中就寫亂了,無論是命名或者是樣式的書寫順序,這里做一個總結,提醒自己在書寫css的時候時刻注意,大家可以參考哈。 1. 樣式屬性順序 單個樣式規則下的屬性在書寫時,應按功能進行分組&…

android 協程,關于android:Kotlin協程實現原理SuspendCoroutineContext

明天咱們來聊聊Kotlin的協程Coroutine。如果你還沒有接觸過協程,舉薦你先瀏覽這篇入門級文章What? 你還不曉得Kotlin Coroutine?如果你曾經接觸過協程,置信你都有過以下幾個疑難:協程到底是個什么貨色?協程的suspend有什么作用&…

清空easyui checkbox選中項

$(#dg).datagrid(unselectAll);轉載于:https://www.cnblogs.com/douhuan/p/7116744.html

python 編輯excel需要什么包_Python 中操作EXCEL表格的包

今天,馬云爸爸又來貢獻金句了,比王健林公公一億一個小目標還高,“一個月掙一二十個億很難受!!!”,作為在傳統企業主要為電商部門提供數據分析的數據分析師,體驗太深刻了。雙11前后&a…

用Java處理大文件

最近,我不得不處理一組包含逐筆歷史匯率市場數據的文件,并很快意識到使用傳統的InputStream都無法將它們讀取到內存中,因為每個文件的大小都超過4 GB。 Emacs甚至無法打開它們。 在這種特殊情況下,我可以編寫一個簡單的bash腳本&…

java IO(一):File類

1.File類簡介 File類位于java.io包中。它面向文件層次級別操作、查看文件,而字節流、字符流操作數據時顯然比之更底層。 學習File類包括以下幾個重點:文件路徑、文件分隔符、創建文件(目錄)、刪除文件(目錄)、查看文件內容(輸出目錄內文件)、判斷文件(是…

android listview 開發,android開發之ListView實現

今天又初步學習了一下ListView控件,看看效果如下:LisViewActivity.java源碼:package com.jinhoward.UI_listview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundl…

input ios問題 小程序_微信小程序開發常見問題匯總

原標題:微信小程序開發常見問題匯總1、域名必須是https非https的域名不被微信小程序允許。2、input組件placeholder字體顏色卸載placeholder-class里面的color并不生效,需要寫在placeholder-style里面就可以了。3、wx.navigateTo無法跳轉到帶tabbar的頁面…

https://github.com/

https://github.com/ qq郵箱 轉載于:https://www.cnblogs.com/chang1/p/7133251.html

Less 的用法

1. node.js node.js是一個前端的框架 自帶一個包管理工具npm node.js 的安裝 官網:http://nodejs.cn/ 在命令行檢驗是否安裝成功 切換到項目目錄,初始化了一個package.json文件 安裝與卸載jQuery包(例子) 安裝 卸載 安裝淘寶…

淺談springboot整合ganymed-ssh2遠程訪問linux

環境介紹 技術棧 springbootmybatis-plusmysqlganymed-ssh2 軟件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 SSH(遠程連接工具)連接原理:ssh服務是一個守護進程(demon),系統后臺監聽客戶…