A闪的 BLOG 技术与人文
v8::V8::InitializeICUDefaultLocation(argv[0]);
v8::V8::InitializeExternalStartupData(argv[0]);
std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
v8::V8::InitializePlatform(platform.get());
v8::V8::Initialize();
V8:这个是个大杂烩的工具类,从初始化到关闭平台都离不开它。
国际化的实现由ICU库来提供对Unicode等功能的实现。在初始化时候,可以使用以下两个接口进行初始分化。
给定ICU数据文件进行初始化
v8::V8::InitializeICU(const char * icu_data_file = nullptr)
根据默认的Location数据进行初始化
v8::V8::InitializeICUDefaultLocation(const char * exec_path,
const char * icu_data_file = nullptr
)
使用 v8_enable_i18n_support
可以选择是否开启i18n功能支持。
V8有个优化功能,就是把内置函数和一些代码读取并编译,这样运行速度快。而这些编译后的内存布局可以以文件方式保存在磁盘,这样启动V8时,指定这些文件即可加快启动速度。就不用在启动时,针对内置函数进行一次编译操作。 这个文件有两个:
指定保存路径初始化
v8::V8::InitializeExternalStartupData(const char * directory_path)
以字节和结构体方式初始化
v8::V8::SetSnapshotDataBlob(StartupData * startup_blob)
v8::V8::InitializeExternalStartupDataFromFile(const char * snapshot_blob)
Platform是针对不同平台包装成相同接口的一组适配层。
针对自定义Platform内容过多,在其他文档进行记录。
如无特殊需求,则使用默认的平台。
std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
v8::V8::InitializePlatform(platform.get());
v8::V8::Initialize();
到此为止,V8算是初始化完毕
v8::V8::Dispose();
关闭并清除V8绑定的Platform
v8::V8::ShutdownPlatform();
通常情况下,在释放V8前,需要调用所有Isolate实例的Dispose方法将其释放掉。