JS內存管理與垃圾回收

javascript的內存管理

Javascript 是那些被稱作垃圾回收語言當中的一員。垃圾回收語言通過周期性地檢查那些之前被分配出去的內存是否可以從應用的其他部分訪問來幫助開發者管理內存。換句話說,當計算機發現有的內存已經不能被訪問到了,就會把它們標記為垃圾。開發者只需要知道一塊已分配的內存是否會在將來被使用,而不可訪問的內存可以通過算法確定并標記以便返還給操作系統。

引用傳遞和值傳遞

js中的變量除了6個基本類型以外,其余的都是對象。也就說基本類型在賦值是傳遞的是值,也就是原來數據的一份拷貝。基本類型包括number、string、boolean、symbol、null、undefined.
用2個例子來理解一下:

值傳遞

var a = 10;  //基本類型
var b = a;   //a把10拷貝一份,把這個拷貝給b
a = 20;  //修改了a,不影響a的拷貝
console.log(a);  //20
console.log(b);  //10
復制代碼

引用傳遞

var a = {num: 20};  //不是基本類型
var b = a;   //這里沒有任何拷貝工作,b指向和a完全一致的同一塊內存
b.num = 15;  //由于b和a指向同一塊內存,所以b.num修改了等同于a.num修改了
console.log(a.num); //15
console.log(b.num); //15//進一步理解
b = {age: 10};  //等號右邊定義了一個新的對象,產生的新的內存分配,此時b指向了這塊新的內存,a還是指向原來那塊內存
console.log(a);  //{num: 15}
console.log(b);  //{age: 10}
復制代碼

垃圾回收與內存泄漏

垃圾回收(Garbage Collection),簡稱GC。簡單來講,GC就是把內存中不需要的數據釋放了,這樣這部分內存就可以存放其他東西了。在javascript中,如果一個對象不再被引用,那么這個對象就會被GC回收。具體回收策略包括以下3種:

標記回收

當從window節點遍歷DOM樹不能遍歷到某個對象,那么這個對象就會被標記為沒用的對象。由于回收機制是周期性執行的,這樣,當下一個回收周期到來時,這個對象對應的內存就會被釋放。

引用計數

當系統中定義了一個對象后,對于這一塊內存,javascript會記錄有多少個引用指向個部分內存,如果這個數為零,則這部分內存會在下一個回收周期被釋放。

手動釋放

就好比上一個例子中,利用delete關鍵字刪除變量或屬性,達到釋放內存的目的。



轉載于:https://juejin.im/post/5b407282e51d451946090aaa

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

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

相關文章

牛客網分糖果

題解: 考試的時候沒有想出來。。。 剛開始想了個比較錯誤的dp 后來想到了容斥。。 但是沒有想到怎么去維護這個東西。。 按照一般的套路 至少有一個相鄰相等的-至少有兩個相鄰相等的 但是這道題里這樣并不好維護 我們考慮用dp來算這個東西 f[i]f[j]*min(a[j].....a[…

HTTP 503 錯誤 – 服務不可用 (Service unavailable)

介紹因暫時超載或臨時維護,您的 Web 服務器目前無法處理 HTTP 請求。 其含義是, 這是一個暫時情況,會有一些延誤, 過 后將會得到緩解。 有些服務器在這種情況下也許干脆拒絕套接字(socket) 連接&#xff0c…

SHA 加密是什么( sha1 和 MD5 的區別 )

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 SHA 安全哈希算法(Secure Hash Algorithm)主要適用于數字簽名標準(Digital Signature Standard DSS…

10個管理工作時間的小技巧

導讀:如何才能穩步追隨社會的變遷,如何才能留住飛逝的時間。俗話說:“一寸光陰一寸金,寸金難買寸光陰。”珍惜現在的時光,將來才不會為年輕時揮霍的時間而感到悔恨。三位作者Joe Mathews,Don Debolt&#x…

12-思科防火墻:ASA會話超時

一、實驗拓撲:二、實驗要求:DCD:死亡檢測時間,默認R2 Telnet上去保持時間為1個小時,超時就會被清除掉,這里要求變為4小時,每15s就會發送5個DCD檢測包,如沒回應就剔除掉,回…

orCAD使用Orcad Capture CIS按Room擺放

http://www.sig007.com/EDAguide/176.html 37 使用Orcad Capture CIS按Room擺放 (1)打開原理圖某一工程頁 (2)按Ctrl鍵依次選中需要建Room的元件,右擊,選擇Edit Properties 在Filter by 下拉菜單中選擇Cad…

503錯誤的原因和解決方法

如果出現“Service Unavailable”的提示,刷新幾下又可以訪問。 出現這種情況是由于您的網站超過了iis限制造成的 由于2003的操作系統在提示IIS過多時并非像2000系統提示“鏈接人數過多”,而是提示"Service Unavailable",出現這種情況是由于網…

Java中十六進制轉換 Integer.toHexString()

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 用例: Long.toHexString(number) 其中 number 是一個long類型參數。 描述: java.lang.Integer.toHexString(…

細數25個硅谷最熱創業公司 尋找創業靈感

【CSDN編譯報道】硅谷堪稱高科技產業之鄉,每當提起就能聯想到影響全球產業的各大著名企業Mircosoft、Google、Adobe、Oracle、Yahoo、SAP、intel等。而硅谷也被譽為創業公司的天堂,多如繁星的初創公司Karma、99Dresses、Getaround、Omada Health、Social…

數據特征分析:2.對比分析

對比分析 兩個相互聯系的數(指標)進行比較(絕對數比較、相對數比較) 對比分析 對比分析 → 兩個互相聯系的指標進行比較 絕對數比較(相減) / 相對數比較(相除)結構分析、比例分析、…

Java基礎-Java中的內存分配與回收機制

Java基礎-Java中的內存分配與回收機制 作者:尹正杰 版權聲明:原創作品,謝絕轉載!否則將追究法律責任。 一. 二.轉載于:https://www.cnblogs.com/yinzhengjie/p/9279601.html

離散數學中關于自反與反自反的通俗解釋

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 設R是A上的二元關系&#xff0c;二元關系自反&#xff1a;任取一個A中的元素x&#xff0c;如果都有<x,x>在R中&#xff0c;那么就…

[Educational Round 5][Codeforces 616F. Expensive Strings]

這題調得我心疲力竭...Educational Round 5就過一段時間再發了_(:з」∠)_ 先后找了三份AC代碼對拍&#xff0c;結果有兩份都會在某些數據上出點問題...這場的數據有點水啊_(:з」∠)_【然而卡掉本弱還是輕輕松松的】 題目鏈接&#xff1a;616F - Expensive Strings 題目大意&a…

Redis自增計數

INCR key 將 key 中儲存的數字值增一。 如果 key 不存在&#xff0c;那么 key 的值會先被初始化為 0 &#xff0c;然后再執行 INCR 操作。 如果值包含錯誤的類型&#xff0c;或字符串類型的值不能表示為數字&#xff0c;那么返回一個錯誤。 本操作的值限制在 64 位(bit)有符號數…

android布局中使用include及需注意點

在android布局中&#xff0c;使用include&#xff0c;將另一個xml文件引入&#xff0c;可作為布局的一部分&#xff0c;但在使用include時&#xff0c;需注意以下問題&#xff1a;一、使用include引入如現有標題欄布局block_header.xml&#xff0c;代碼如下&#xff1a;<Rel…

周鴻祎回顧IPO一周年:保持創業心態 看好無線

奇虎360董事長兼CEO周鴻祎 3月19日晚間消息&#xff0c;在奇虎360上市接近一周年之際&#xff0c;奇虎360董事長兼CEO周鴻祎與媒體及個人投資者進行溝通&#xff0c;他表示這一年壓力比以前更大&#xff0c;因為在上市光環下依然需要保持創業心態&#xff0c;同時他強調無線和…

《Effective Java》 第二講:對于所有對象都通用的方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上接《Effective Java》 第一講&#xff1a;創建和銷毀對象 八、覆蓋 equals 時請遵守通用約定 1. 自反性&#xff1a;對于任何非空的引…

linux刪除文件操作

linux刪除文件夾命令 在用Linux的時候&#xff0c;有時候要刪除一個文件夾&#xff0c;往往會提示次此文件非空&#xff0c;沒法刪除&#xff0c;這個時候&#xff0c;必須使用rm -rf命令。 實例一&#xff1a; rm -rf /var/log/httpd/access 將會刪除/var/log/httpd/access目錄…

Python 運算符重載

https://www.cnblogs.com/hotbaby/p/4913363.html轉載于:https://www.cnblogs.com/changbaishan/p/9668720.html

python爬取elasticsearch內容

我們以上篇的elasticsearch添加的內容為例&#xff0c;對其內容進行爬取&#xff0c;并獲得有用信息個過程。 先來看一下elasticsearch中的內容&#xff1a; {"took": 88,"timed_out": false,"_shards": {"total": 5,"successful…