内存管理

内存能够认为是办公室里的一排排收件箱,若是你想把一个东西给谁,你就能够把东西放到一个指定的收件箱里面。安全

每个箱子有一个号码,表明箱子的地址,别人能够经过号码找到这个箱子。每一个箱子的大小相同,一般是32位或者64位。性能

若是你想放一个数字进去,你能够直接放,但若是想放一个字母进去的话,好比H,咱们须要先经过一个方法,找到表明这个字母的数字,好比经过UTF-8编码。咱们经过编码器,把字母转换成数字,而后把数字存储起来。编码

                         

当咱们想从盒子中取出它的时候,咱们经过解码器,把数字转换成字母H。3d

自动的内存管理

当咱们使用js的时候,咱们实际不用思考内存的问题,由于js引擎已经把它抽离了出来,js引擎做为中介帮自动帮咱们管理内存。cdn

                            

js建立变量的内存处理过程

                           

js引擎经过编码器,把变量值转换成二进制blog

                         

js引擎在内存中找能把这个二进制数放进去的空间,这个过程叫内存分配。内存

                     

接着js引擎会持续跟踪这个js变量是否在程序中仍然能够访问,若是变量再也不被访问,内存将会回收该变量,从而能够用来存放新值。开发

                    

程序跟踪变量,当变量不能访问的时候清除变量的过程称做内存回收。it

像js同样,不用直接管理内存的语言能够称做内存管理语言。内存管理

这种自动管理内存的语言,可以让开发人员开发起来更简单,可是它也增长了一些开销,这些开销有时会让性能变得不可预测。

手动内存管理

对于直接操做内存的语言,好比说C语言,它能够直接向内存中存储数据也能够直接从内存中加载数据。

                                              

你须要经过malloc申请内存,而后经过free释放内存,若是不释放内存可能致使内存不足,释放内存的时机选错有可能引发bug或者安全漏洞。

相关文章
相关标签/搜索