使用Flash动画和JavaScript对网站建设者的影响及垃圾收集器总结[图]

一、使用Flash动画和JavaScript对网站建设者的影响
相信大家肯定都有上网这个习惯,因为这是一个网络化的时代想要了解什么事情都可以在网上来了解到,比如购物、吃饭、学习等等。这要归功于这多年来互联网的发展给我们带来了很多便利,不知道大家还记不记得在十年前左右电脑上的网页很多网站一点进去就有非常炫酷的动画,但是到近几年来看网站中的动画开始变得越来越少,这其实因为基于搜索引擎优化的标准实行的武汉网站优化,这些动画有一个专业名词叫做Flash,现在变成了JavaScript了,那么使用Flash动画和JavaScript对武汉网站优化有哪些影响?

使用Flash动画和JavaScript对网站建设者的影响及垃圾收集器总结[图]

时间来到近几年其实现在的很多网站的banner的轮播上都使用的是Flash和JavaScript,现在很多购物网站都很喜欢Flash来制作banner图。在从简单的方面来讲就是一些和我们生活密切相关的产品。
随着搜索引擎的更新Flash动画使用的越来越少,之前使用是因为Flash很炫酷当用户点击进去的时候会有很好的视觉体验,加深印象。不过这最终还是抵不过时代的更新,武汉网站优化时代的到来Flash动画也出现了很多弊端。主要有打开速度慢,一般一个网页如果五秒钟还没有打开的话很多用户都会直接选择关闭,如果全站都使用Flash动画那么网站打开速度将会非常慢,想要打开速度快那就要求用户的网速很快,但并不是每个用户的网速都很快,从优化角度来看这是不符合用户使用习惯的。
还有一点就是因为过于炫酷,想要找到想要的东西很困难。
那么使用JavaScript来制作网页呢?首先武汉网站优化使用JavaScript制作网页不仅能呈现动态的效果,在点击的时候也不需要缓冲速度,并且也是现在主流的语言之一,从优化的角度来看JavaScript更加符合用户的需求,所以现在很多网站都使用JavaScript来制作网页。Flash动画并不符合优化。
二、JavaScript中的垃圾收集器
内存清除对于任何应用程序都是强制性的过程,包括那些用JS编写的应用程序。如果我们忽略此过程,则内存中将充满对象(大多数是“死”对象),并且在某些时候,根本就没有地方存放新数据。在本文中,我们将分析清除JS中的内存的基本原理,并考虑几种垃圾回收算法,并确定哪种效率更高。
什么是垃圾
垃圾是无法从“根”引用获得的任何对象。垃圾包括与根失去联系的所有“死物”。此外,“死”对象通常可以彼此链接,并形成相当大的尺寸链。尽管如此,它并没有使它们“活跃”,这就是为什么引用计数方法进行垃圾回收的方法行不通的原因。但是,哪个会工作呢?让我们从头开始。
垃圾收集方法
让我们考虑几种方法,从最简单和最快的方法开始,以最有效但最慢的方法结束。
扫描
这是最简单的垃圾搜索和删除算法。它仅在内存包含垃圾的情况下才起作用。如果仅填充活动对象,则“标记和扫描”将不执行任何操作。
MarkandSweep的主要缺点是会分散内存。结果,它可以清除很多空间,但是仍然不能在RAM中存储新的大对象。
紧凑标记扫描

Mark-Sweep-Compact算法具有非常必要的碎片整理功能。清除后,它将移动所有剩余的对象,并创建单个大块的可用内存空间。就结果而言,Mark-Sweep-Compact是最佳的。作文(https://www.isanxia.com)但是,转移对象的过程相当耗资源。此外,Mark-Sweep-Compact需要遍历内存两到三遍,这需要很多额外的时间。


半空间
SemiSpace(复制收集器)在某种程度上加快了清除和整理碎片的过程。SemiSpace查找活动对象,将它们复制到预先分配的空间,然后删除其余对象。
该算法比Mark-Sweep-Compact更简单,更快,但是需要更多空间来复制活动对象。此外,复制过程也很耗资源。
弱代假设
根据世代假设,年轻物体比旧物体更容易死亡。新创建的对象更有可能成为垃圾。因此,垃圾收集器更频繁地检查此类对象是合理的。
让我们考虑使用Java垃圾回收算法的分代方法。其工作方式如下:
所有的记忆分为年轻一代和老一代。
年轻一代分为以下几个时段:伊甸园,幸存者空间1和2(S0和S1)。
所有新物体都进入伊甸园。
在每次检查期间,该算法会将活动对象从Eden和一个S插槽传输到另一个S插槽,然后完全清除检查的插槽。
该算法依次检查S插槽:如果在上一次检查期间检查了Eden和S0插槽,并且将活动对象复制到S1,则在下一次检查期间,将检查Eden和S1,并将活动对象复制到S0。
寿命足够长的物体正在向老一代转移。在这段时间内,他们设法进行了许多检查,并将继续以很高的概率存活。
在V8JS引擎中运行OrinocoGC垃圾收集器时,将应用类似的原理。
奥里诺科气相色谱
OrinocoGC会分割内存并根据对象的年龄移动对象,但是此算法有其细微差别:
记忆分为年轻记忆和旧记忆,但年轻记忆仅包含两个插槽:托儿所和中级。
一次在多个线程中执行内存检查。当将活动对象从Nursery移到Intermediate时,流将留下一个前向指针。这样做是为了使到达相同对象但沿着不同引用链的另一个线程不会尝试再次移动它。
OrinocoGC算法的工作原理如下:
所有新对象都转到Nursery,然后在检查了清道夫之后,尚存的对象移到了中级。其余的将被删除。
压缩内存并通过下一个Scavenger检查后,活动对象将转到旧内存。
旧内存的检查频率较低;该检查由主GC进行。
Orinoco中有两个垃圾收集器:一个用于检查年轻内存的辅助垃圾收集器(Scavenger),一个用于检查整个数组的主要垃圾收集器。紧凑阶段是可选的,用于主收集器的特权。由于移动对象仍然是一个消耗资源的过程,因此为了最小化此类动作,Orinoco使用了空闲列表。这些是内存中可用空间的列表,这些列表允许为新
对象定义合适的可用空间。如果内存过于分散并且对象没有合适的位置,则算法将进入精简阶段。
JS开发人员无权访问GC。这是一个实现细节。尽管JS无法直接调用收集器,但V8可以访问引擎嵌入到其中的环境。GC可以设置环境在空闲时间执行的任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值