`
zhangyaochun
  • 浏览: 2620610 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

初探js各大引擎之v8

阅读更多

以前没有自己写过js引擎任何的研究文章,最近一直在做前端性能优化的研究,今天在看各大js引擎优化细节相关的文档中看到了这些名词。

 

简单记录一下吧。

 

 

 

---------------V8

 

1.   下面的内容是查阅自维基百科

 

V8是一个由丹麦Google开发的开源JavaScript引擎,用于Google chrome。Lars Bak是组长,v8在执行之前将JavaScript编译成机器码,而非字节码或者是直译,以此提升性能。更进一步,使用了如内联等方法来提高性能。V8组译器是基于Strongtalk组译器。

 

2.   关于Lars Bak

 

--其实从1988年就开始参与虚拟机的开发,在1991年的时候参与了Self虚拟机的开发,到1997年Java HotSpot引擎技术的lead,同时也开发了高性能的Java ME虚拟机。所以其实在v8出来的时候,大哥已经在这个领域研究了20年。所以有的人说v8到现在还是最NB的引擎。

 

3.   V8的特性简单介绍:

--来自官方http://code.google.com/intl/zh-CN/apis/v8/design.html


主要包含3个:

 

  •  快速属性访问(Fast Property Access)
  •  动态机器码生成(Dynamic Machine Code Generation)
  •  高效的垃圾收集(Efficient Garbage Collection)
   这边我侧重说一下这个Efficient Garbage Collection

V8的所谓垃圾收集(garbage collection)是回收那些进程不再需要的对象占用的内存。为了确保快速的对象分配和缩短垃圾收集造成的停顿以及杜绝内存碎片,V8采用的是一种stop-the-world,generational,accurate的垃圾收集器。
这意味着V8
  • 在执行垃圾收集周期内停止程序执行
  • 在大部分的垃圾收集周期中,只处理对象堆的一部分。这会减轻停止应用程序而受到的影响。
  • 总是准确地知道内存中对象和指针的位置。这样就避免了错误地把对象当做指针而因此造成的内存泄露。
在V8中,对象堆被分成两个部分:一个是新创建的对象分配的空间,另一个是垃圾收集周期遗留下来的就的对象。如果在垃圾收集周期内某一个对象被移动了,V8会更新所有指向这个对象的指针到新的地址

v8中对于对象的类型采用的hidden class机制,而且v8有两个机器码的编译器,一个只做最简单的优化,避免了编译而造成的开销,另一个是用来坐复杂优化的。

ps:目前v8衍生出来了最近老火的node.js。直接将js覆盖到了后端开发。
2
1
分享到:
评论

相关推荐

    Smashing Node.js JavaScript Everywhere

    Node.js使用了Google Chrome V8 JavaScript引擎来处理代码,这是Node.js能快速执行代码的重要原因之一。 描述中提到的“Smashing Node.js: JavaScript Everywhere”是一本专注于教授Node.js知识、以及如何使用Node....

    进阶之初探nodeJS

    NodeJS是一种基于Chrome V8引擎的JavaScript运行环境,让JavaScript脱离浏览器可以在服务器端运行,具有高性能、轻量级、易扩展的特点。它广泛用于构建网络应用,尤其是Web服务器和API服务。NodeJS被设计为单线程,...

    WEEX 初探1

    Weex 的工作原理是通过Transformer将DSL文件(.we文件)转换成JS Bundle,然后将这些JS Bundle部署到分发服务器,并下发到各客户端,客户端运行JS引擎解析JS Bundle,并通过JS-Native Bridge让JS引擎和Native代码可以...

    Examples-Node.js_20140424:Node.js开发实务:初探JavaScript 应用程式设计书本范例

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript编写服务器端代码,从而打破了JavaScript只能在浏览器中运行的传统。Node.js以其非阻塞I/O模型和事件驱动的特性,尤其适合用于构建...

    初探nodeJS

    这就得归功于V8引擎(V8是Google Chrome浏览器的JavaScript引擎),通过对高性能V8引擎的封装,并通过一系列优化的API类库,使其就能够在后端运行了。 并且node有两大特点:  1、基于事件驱动;  2、无阻塞。 从而...

    《JavaScript移动开发》正本书教案完整版电子教案课程设计最全电子教案全套.docx

    现代浏览器中都有内置的JavaScript引擎,如V8引擎用于Google Chrome和Node.js中。 - **JavaScript的三个组成部分**: - **ECMAScript (核心)**:定义了JavaScript的基本语法和核心功能,如变量、函数等。 - **DOM...

    canvas.ts:Node.js Canvas LMS客户端

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者能够在服务器端使用JavaScript编写程序,实现了JavaScript全栈开发的可能性。Canvas.ts选择Node.js作为基础,意味着开发者可以使用熟悉的JavaScript...

    HelloWorld.Node.js

    本篇文章将围绕“HelloWorld.Node.js”这个项目,深入探讨Node.js这一基于Chrome V8引擎的JavaScript运行环境。 一、Node.js简介 Node.js由Ryan Dahl于2009年推出,其设计思想是让JavaScript走出浏览器,应用于...

    weather-node.js:入门级node.js

    首先,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使得开发者能够在服务器端使用JavaScript编写高性能的网络应用。Node.js采用事件驱动、非阻塞I/O模型,使其轻量又高效,特别适合数据密集型实时应用。...

    infinigon-free-for-all:这个 Node.js 模块在免费模式下创建了一个 Infinigon 游戏

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它通过提供异步、非阻塞I/O模型,使服务器端的JavaScript编程变得更加高效。Node.js 使用事件驱动、非阻塞I/O模型,非常适合处理大量的并发连接,因此在...

    携程技术合集 2019.pdf

    12. **新JS引擎Hermes调研**:Hermes是一个针对React Native的JavaScript引擎,它的目标是优化启动时间和减少应用的内存占用。携程对Hermes的调研可能探讨了该引擎在提升React Native应用性能方面的影响。 13. **...

    Node.js-first-projects

    - **事件驱动编程**:Node.js基于Chrome V8引擎,采用事件驱动、非阻塞I/O模型,这使得它在处理高并发请求时表现优秀。 - **模块系统**:Node.js使用CommonJS模块化规范,通过`require`导入模块,`module.exports`...

    beginning-with-nodejs:使用NodeJS和Express的第一步

    2. V8引擎:Node.js的性能得益于V8引擎,它能将JavaScript代码编译成机器码,执行速度非常快。 3. 文件系统API:Node.js提供了丰富的文件系统API,允许开发者直接操作文件,进行读写操作。 4. 模块系统:Node.js使用...

    kitchat:第一个 Node.js 应用

    Node.js是建立在Chrome V8引擎上的JavaScript运行环境,它的非阻塞I/O模型使其在处理高并发场景时表现出色。通过事件驱动和异步编程,Node.js可以高效地处理大量并发请求,这对于构建聊天应用这类实时通信系统至关...

    nodejs入门到实战-02-webserver介绍和express框架初探

    Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 语言进行服务器端编程。在本节中,我们将探讨如何使用 Node.js 创建一个简单的静态 Web 服务器,并初步接触 Express 框架,...

    Web-Application-1:基于节点js的响应式Web应用程序,仍处于开发阶段

    它使用V8引擎执行JavaScript代码,使得后端处理也能像前端一样快速。在“Web-Application-1”中,Node.js不仅承担了数据处理和业务逻辑的重任,还结合了Express框架,提供了简洁的API接口,便于快速搭建Web服务。 ...

    PersonalWeb:nodejs+bootstrap+mysql 网站,旨在搭建html5游戏,正在建设中~~~

    首先,Node.js是基于Chrome V8引擎的JavaScript运行环境,它使得JavaScript可以在服务器端运行,极大地拓展了JavaScript的应用领域。在"PersonalWeb"项目中,Node.js作为后端服务,负责处理用户的请求,与数据库交互...

    angular_template

    接着,Node.js v0.10.32是这个模板使用的JavaScript运行时环境,它基于Chrome V8引擎,允许开发者在服务器端使用JavaScript编写代码。Node.js提供了丰富的生态系统,包括npm(Node Package Manager),使得开发者...

Global site tag (gtag.js) - Google Analytics