加入收藏 | 设为首页 | 会员中心 | 我要投稿 盐城站长网 (https://www.0515zz.cn/)- 运维、云管理、管理运维、智能数字人、AI硬件!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

AMD获得许可 继续供货华为?

发布时间:2021-02-12 13:13:51 所属栏目:传媒 来源:互联网
导读:9月16日,苹果秋季新品发布会如约而至,但传闻中的iPhone12却要等到下个月才能见到。发布会仅上新了两款智能手表和两款iPad平板电脑,新品iPad Air 4则搭载了最新的处理器芯片A14 Bionic(仿生)处理器。这几款新产品香不香另说,A14 Bionic处理器却成为了此

9月16日,苹果秋季新品发布会如约而至,但传闻中的iPhone12却要等到下个月才能见到。发布会仅上新了两款智能手表和两款iPad平板电脑,新品iPad Air 4则搭载了最新的处理器芯片A14 Bionic(仿生)处理器。这几款新产品香不香另说,A14 Bionic处理器却成为了此次发布会的最大亮点。

根据苹果的介绍,A14 Bionic处理器是苹果首款采用5nm工艺打造移动设备芯片,晶体管数量相较于A13 Bionic处理器的7nm芯片增加了近40%,晶体管数量达到了惊人的118亿颗。
 

此时用到的数据在复制的过程中已经被整理好,那么新生代区域的垃圾回收是这样进行回收的,再次进行垃圾回收的时候,会依次执行上述的动画。这个垃圾回收算法被称为 Scavenge 算法。

然而这个算法并不适合老生区域的数据回收,我们上边提到,老生区域数据的特点,数据占用内存大,当我们复制的时候,非常耗时,这也是为什么只有新生代区域设置空间小的原因,为了保证垃圾回收的执行效率嘛。

在老生代区域,垃圾回收机制使用的是标记-清除法。

我们先来说说如何进行对可回收的数据如何标记的,首先我们从一个根数据开始进行一次循环遍历,看看哪些数据对象没有被引用使用到。然后要进行标记,当下次进行垃圾回收的时候对标记的对象进行销毁。
 

从以上动画中,可以看出,新生代区域被一分为二,一边存放的是数据(称它为 Form 空间),另一边是空闲区域(称它为To空间)。当数据区域空间快被占满的时候,就会执行一次垃圾回收机制。

对用不到的数据进行打标记。然后将没有被标记的数据进行复制到 To 空间,然后对标记的数据进行回收,回收之后 Form 空间就没有任何数据了,然后两个空间位置就会互换,To 空间就变成了 Form 空间,而此时有数据的成为了 To 空间。
 

新生代区域主要存放时是存放时间比较短的而且占用内存比较小引用类型数据,而老生代区域存放时间比较长占用内存比较大的引用类型数据。而且新生代区域占据的内存比较小,反而老生区占用的内存很大。

所以呢,V8 引擎不得不用两个垃圾回收器分别回收对应区域无效数据。

对于垃圾回收机制的执行过程,小册也具体写到。
 

没错,确实这块内存并没有销毁,而是变成了无效的内存的状态。当另一个函数的执行上下文进入调用栈的时候,就会把这个无效内存给覆盖掉,那么我们认为之前存在的栈内存被销毁或者重新利用了。

2、堆内存中的数据如何回收?

上边讲到的栈内存,根本用不到咱们的垃圾回收器,因为它会被下一个执行上下文的函数所覆盖或者说重新利用起来。

但是不要忘记,在堆内存中,大多数存储的是引用类型,而引用类型的地址是存储在栈内存中,栈内存这时候已经销毁,无法引用到该引用类型,那么这个无法引用这块堆内存空间又是如何销毁和回收的呢?
 

打开谷歌控制台,切换到 Preformance 面板,在 Memory 复选框打勾,点击左上角的开始或者刷新按钮,我在上图标出的红色区域就是内存的在每个阶段的实时占用情况。

如果内存的占用情况基本稳定,那么说明不存在内存泄漏的情况,如果内存随着时间的推移,不断的进行上升,说明内存有泄漏的可能。

垃圾回收机制

对于 JS 的垃圾回收机制,主要做三件事,分别是标记、回收、整理。

标记的是用不到的内存,回收的是已标记的内存,整理的是回收后的零碎不连续的内存空间。

那么回收的栈内存和堆内存,垃圾回收器是如何进行不同的方式进行回收的呢?

首先我们要知道栈内存和堆内存分别存储是什么类型的数据,分别是怎样存储的,这个在小册子中具体也提到过,如下(不理解的建议可以先看小册子内容):

(编辑:盐城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读