缠缠绵绵的v8与c++ | 之二

Embedder‘s Guide(记得FQ)

如果你已经读过 Getting Started, 那么现在,你已经对V8的一些关键概念比较熟悉了。比如,V8是一个独立的虚拟机,V8的handle,scope和context的概念。

这篇文章更进一步讨论了这些概念,并且介绍了另外的一些将V8嵌入到C++中至关重要的概念。

V8的API提供了这样一些功能,包括编译和执行脚本,访问C++中的方法和数据结构,处理错误以及开启安全检查。你的应用程序可以像使用其他一些C++库一样来使用V8,而只需要包含它的头文件 v8.h。

V8 Design Elements 提供了一些关于V8的背景知识,如果你想优化你的V8应用程序,你应该会感兴趣的。

适合本文的读者

这篇文章适用于那些想把V8 JavaScript引擎嵌入到C++程序中,同时让JavaScript和C++中的对象和方法互相可见的C++程序猿。

Handles(句柄)和垃圾回收

一个Handle指向一个在堆中的JavaScript对象。 V8垃圾搜集器回收那些无法被再次访问的对象所占用的内存。在垃圾搜集过程中,搜集器时常将对象移动到一个不同的位置(当然,对象至始至终都在堆中)。不过不用担心,当垃圾搜集器移动对象时,它会自动更新每个Handle,以确保它们指向原来的对象。

如何判定一个对象变成垃圾了呢?

如果一个对象已经无法在JavaScript中被访问,并且也没有Handle指向它,这个时候,它就被认定成垃圾了。

垃圾搜集器会时不时的处理掉这些垃圾来回收内存。

V8的垃圾搜集机制是V8良好表现的重要原因,如果你想深入了解,V8 Design Elements 也包含了相关内容。

Handle的各种类型:

a. Local handle(局部句柄?)存在于栈中,当相关的析构函数被调用时,会被自动清理掉。这些Local handles的生命周期由容纳它们的handle scope决定。Handle scope通常在函数调用之初被创建。当Handle scope被删除时,垃圾搜集器将大开杀戒,清除掉所有Handle scope中的handle所指向的对象。当然,这些对象就不可能再在JavaScript中被访问,也不会被其它的handle来指向了。这种类型的handle在Getting Started(见“之一”)可以找到。

Local handle的形式为:Local<SomeType>

注意:Handle的栈并不是C++栈的一部分,但handle scope的栈却是嵌入在C++的栈中的。而且Handle scope只能在栈中被创建,也就是说不能new出来(为什么?因为new出来的东东存在于堆中)。

b.

时间: 2024-11-01 22:29:22

缠缠绵绵的v8与c++ | 之二的相关文章

Python初体验

本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语

python学习笔记一 介绍、基本语法、流程控制

1.用户输入 #!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello " + name ) 2.输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即: #!/usr/bin/

百度去年算法更新之后站长们应该何去何从

2016年6月份,打击欺骗下载和无告知的捆绑下载之欺骗,7月份,打击移动页强制用户下载或调起APP的行为之冰桶3.0,8月份,打击网站窃取用户联系方式等隐私行为之天网算法,9月份,代价移动页面广告阻碍用户获取内容的行为之冰桶4.0,10月份,打击移动页上的恶劣色情博彩广告之冰桶4.5,11月份,打击收费软文租售目录行为之蓝天算法. 以上,即2016年百度算法之盘点.来看看出各种算法的时候网站们都出现了怎样的问题,被2016年算法们的"步步相逼",2017年站长们又该如何处之. 天网算法

python走起之第一话

Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众多领域.目前业内几乎所有大中型互联网企业都在使用Python,如:

Python之路—Day2

结束了第一天的课程,第二天的课程听的有点晕晕乎乎,有太多的理论东西要理解,对于我这种本来就不聪明里面慢的人来说,真的太痛苦了.不过之前有看过老师的视频,对于理解还算有帮助,还好第二天讲的东西不是很多,慢慢来还能理解.现在跟着老师的课堂视频和博客在复习下第二天的内容吧!一.pyc是个什么鬼——就是鬼1. Python是一门解释型语言?我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在.如果是解释型语言,那么

盒子模型、网页自动居中、float浮动与清除、横向两列布局

1.CSS包含:标准文档流,浮动,绝对定位 标准文档流的特点:从上到下,从左到右,输出文档内容 盒子模型:块级元素(div ui li dl dt p)与行级元素(span strong img input) 盒子模型:边框(border)外边框(margin)内边框(padding)内容(content) 盒子3D模型:border. content+padding .background-img.background-color.margin <html> <head> <

Day1 - Python基础1

本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 入门知识拾遗:三元运算.进制 一. Python介绍 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Pyth

Python之路

本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语

学python的第一天

#Python之路,Day1 - Python基础1 转自金角大王 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆