內存管理

內存能夠認爲是辦公室裏的一排排收件箱,若是你想把一個東西給誰,你就能夠把東西放到一個指定的收件箱裏面。安全

每個箱子有一個號碼,表明箱子的地址,別人能夠經過號碼找到這個箱子。每一個箱子的大小相同,一般是32位或者64位。性能

若是你想放一個數字進去,你能夠直接放,但若是想放一個字母進去的話,好比H,咱們須要先經過一個方法,找到表明這個字母的數字,好比經過UTF-8編碼。咱們經過編碼器,把字母轉換成數字,而後把數字存儲起來。編碼

                         

當咱們想從盒子中取出它的時候,咱們經過解碼器,把數字轉換成字母H。3d

自動的內存管理

當咱們使用js的時候,咱們實際不用思考內存的問題,由於js引擎已經把它抽離了出來,js引擎做爲中介幫自動幫咱們管理內存。cdn

                            

js建立變量的內存處理過程

                           

js引擎經過編碼器,把變量值轉換成二進制blog

                         

js引擎在內存中找能把這個二進制數放進去的空間,這個過程叫內存分配。內存

                     

接着js引擎會持續跟蹤這個js變量是否在程序中仍然能夠訪問,若是變量再也不被訪問,內存將會回收該變量,從而能夠用來存放新值。開發

                    

程序跟蹤變量,當變量不能訪問的時候清除變量的過程稱做內存回收。it

像js同樣,不用直接管理內存的語言能夠稱做內存管理語言。內存管理

這種自動管理內存的語言,可以讓開發人員開發起來更簡單,可是它也增長了一些開銷,這些開銷有時會讓性能變得不可預測。

手動內存管理

對於直接操做內存的語言,好比說C語言,它能夠直接向內存中存儲數據也能夠直接從內存中加載數據。

                                              

你須要經過malloc申請內存,而後經過free釋放內存,若是不釋放內存可能致使內存不足,釋放內存的時機選錯有可能引發bug或者安全漏洞。

相關文章
相關標籤/搜索