- assert - 断言
- Buffer - 缓冲器
- child_process - 子进程
- cluster - 集群
- console - 控制台
- crypto - 加密
- dgram - 数据报
- dns - 域名服务器
- Error - 异常
- events - 事件
- fs - 文件系统
- global - 全局变量
- http - HTTP
- https - HTTPS
- module - 模块
- net - 网络
- os - 操作系统
- path - 路径
- process - 进程
- querystring - 查询字符串
- readline - 逐行读取
- repl - 交互式解释器
- stream - 流
- string_decoder - 字符串解码器
- timer - 定时器
- tls - 安全传输层
- tty - 终端
- url - 网址
- util - 实用工具
- v8 - V8引擎
- vm - 虚拟机
- zlib - 压缩
Node.js v10.8.0 文档
目录
-
- v8.cachedDataVersionTag()
- v8.getHeapSpaceStatistics()
- v8.getHeapStatistics()
- v8.setFlagsFromString(flags)
-
- v8.serialize(value)
- v8.deserialize(buffer)
-
- new Serializer()
- serializer.writeHeader()
- serializer.writeValue(value)
- serializer.releaseBuffer()
- serializer.transferArrayBuffer(id, arrayBuffer)
- serializer.writeUint32(value)
- serializer.writeUint64(hi, lo)
- serializer.writeDouble(value)
- serializer.writeRawBytes(buffer)
- serializer._writeHostObject(object)
- serializer._getDataCloneError(message)
- serializer._getSharedArrayBufferId(sharedArrayBuffer)
- serializer._setTreatArrayBufferViewsAsHostObjects(flag)
-
- new Deserializer(buffer)
- deserializer.readHeader()
- deserializer.readValue()
- deserializer.transferArrayBuffer(id, arrayBuffer)
- deserializer.getWireFormatVersion()
- deserializer.readUint32()
- deserializer.readUint64()
- deserializer.readDouble()
- deserializer.readRawBytes(length)
- deserializer._readHostObject()
- class: v8.DefaultSerializer
- class: v8.DefaultDeserializer
V8#
v8
模块暴露了特定于V8版本内置到 Node.js 二进制文件中的API. 通过以下方式使用:
const v8 = require('v8');
注意: APIs 和实现可能在任何时间变动。
v8.cachedDataVersionTag()#
返回一个表示从V8版本,命令行标志和已检测到的CPU功能派生的“version tag”的整数。这对于判断vm.Script
cachedData
是否兼容当前v8实例非常有用。
v8.getHeapSpaceStatistics()#
返回关于v8堆空间的统计,即组成v8堆的片段。通过V8 GetHeapSpaceStatistics
函数提供统计信息,无论堆空间的顺序,或是堆空间的可用性都可以被保证,并且可能是多个V8版本。
返回一个数组包含如下属性:
space_name
<string>space_size
<number>space_used_size
<number>space_available_size
<number>physical_space_size
<number>
例如:
[
{
"space_name": "new_space",
"space_size": 2063872,
"space_used_size": 951112,
"space_available_size": 80824,
"physical_space_size": 2063872
},
{
"space_name": "old_space",
"space_size": 3090560,
"space_used_size": 2493792,
"space_available_size": 0,
"physical_space_size": 3090560
},
{
"space_name": "code_space",
"space_size": 1260160,
"space_used_size": 644256,
"space_available_size": 960,
"physical_space_size": 1260160
},
{
"space_name": "map_space",
"space_size": 1094160,
"space_used_size": 201608,
"space_available_size": 0,
"physical_space_size": 1094160
},
{
"space_name": "large_object_space",
"space_size": 0,
"space_used_size": 0,
"space_available_size": 1490980608,
"physical_space_size": 0
}
]
v8.getHeapStatistics()#
返回拥有以下参数的对象:
total_heap_size
<number>total_heap_size_executable
<number>total_physical_size
<number>total_available_size
<number>used_heap_size
<number>heap_size_limit
<number>malloced_memory
<number>peak_malloced_memory
<number>does_zap_garbage
<number>
does_zap_garbage
是个0/1式布尔值,它凸显是否设置了--zap_code_space
选项。若为真,那么V8引擎会用一个位模式来覆盖堆中的垃圾。如此,RSS(常驻内存集)会变得越来越大,因为V8会一直征用所有的堆页,从而让他们更难被操作系统交换掉。
For example:
{
total_heap_size: 7326976,
total_heap_size_executable: 4194304,
total_physical_size: 7326976,
total_available_size: 1152656,
used_heap_size: 3476208,
heap_size_limit: 1535115264,
malloced_memory: 16384,
peak_malloced_memory: 1127496,
does_zap_garbage: 0
}
v8.setFlagsFromString(flags)#
flags
<string>
The v8.setFlagsFromString()
method can be used to programmatically set
V8 command line flags. This method should be used with care. Changing settings
after the VM has started may result in unpredictable behavior, including
crashes and data loss; or it may simply do nothing.
The V8 options available for a version of Node.js may be determined by running
node --v8-options
. An unofficial, community-maintained list of options
and their effects is available here.
Usage:
// Print GC events to stdout for one minute.
const v8 = require('v8');
v8.setFlagsFromString('--trace_gc');
setTimeout(function() { v8.setFlagsFromString('--notrace_gc'); }, 60e3);
Serialization API#
序列化API提供了一系列用于序列化JavaScript值的方法,它们兼容于HTML structured clone algorithm。 格式是向下兼容的(可以安心存储于硬盘中)。
注意: 此API正在开发中,任何变化(包括不兼容的API或者传输格式)可能会随时发生直到此警告被移除。
v8.serialize(value)#
- Returns: <Buffer>
使用DefaultSerializer
来序列化value
到一个缓冲区中。
v8.deserialize(buffer)#
buffer
<Buffer> | <Uint8Array> 由serialize()
返回的一个缓冲区。
用默认配置来执行DefaultDeserializer
从而从一个缓冲区中读取一个JS值
class: v8.Serializer#
new Serializer()#
创建一个新的Serializer
对象。
serializer.writeHeader()#
写出一个包含序列化格式版本的头文件
serializer.writeValue(value)#
序列化一个JavaScript值并将结果加入内部的缓冲区。
如果value
不能被序列化则抛出错误。
serializer.releaseBuffer()#
返回存储里的内部缓冲区。若缓冲区已经被释放则不应该使用此序列化机制。如果之前的一次写入操作失败,那么执行此方法会造成不可预知的行为。
serializer.transferArrayBuffer(id, arrayBuffer)#
id
<integer> 一个32位的无符号整型。arrayBuffer
<ArrayBuffer> 一个ArrayBuffer
实例。
标记一个ArrayBuffer
, 表明它的内容正在被带外传输中。同时将ArrayBuffer
包裹于一个反序列化的上下文内,之后将结果传入deserializer.transferArrayBuffer()
中。
serializer.writeUint32(value)#
value
<integer>
写出一个原始32位无符号整型。
此方法在一个自定义的serializer._writeHostObject()
中使用.
serializer.writeUint64(hi, lo)#
写出一个原始64位无符号整型,会被拆分成高32位和低32位两部分。
此方法用于一个自定义的serializer._writeHostObject()
.
serializer.writeDouble(value)#
value
<number>
写出一个JS的number
值。
从方法用于一个自定义的serializer._writeHostObject()
.
serializer.writeRawBytes(buffer)#
buffer
<Buffer> | <Uint8Array>
将原始字节写入序列化机制的内部缓冲区中。反序列化机制会有对应的方法来获得缓冲区的长度。
此方法用于一个自定义的serializer._writeHostObject()
中。
serializer.\_writeHostObject(object)#
object
<Object>
此方法用来写出某种宿主对象,进一步说,是由绑定的原生C++代码所生成的一个对象。 如果无法序列化object
,那么一个恰当的异常会被抛出。
此方法在Serializer
对象本身是不存在的,但可在其子类中提供。
serializer.\_getDataCloneError(message)#
message
<string>
当一个对象无法被克隆时,会使用此方法来生成待抛出的错误对象。
此方法默认为Error
的构造函数,可以在子类中被覆盖。
serializer.\_getSharedArrayBufferId(sharedArrayBuffer)#
sharedArrayBuffer
<SharedArrayBuffer>
当序列化机制将要序列化一个ShareArrayBuffer
对象时会调用此方法。它必须为这对象返回一个32位无符号整型的ID,但若这个对象已被序列化过,则返回上一次序列化时所分配的ID。这个ID会在对象被反序列化时传入deserializer.transferArrayBuffer()
中。
如果对象不能被序列化,则抛出异常。
Serializer
类本身不包含此方法,但可以在其子类中设置它。
serializer.\_setTreatArrayBufferViewsAsHostObjects(flag)#
flag
<boolean>
表明是否视TypedArray
,DataView
对象为宿主对象,也就是说,是否能将他们传入serializer._writeHostObject()
中。
默认以上对象非宿主对象。
class: v8.Deserializer#
new Deserializer(buffer)#
buffer
<Buffer> | <Uint8Array> 由serializer.releaseBuffer()
返回的缓冲区
生成一个新的Deserializer
对象。
deserializer.readHeader()#
读取并验证一个头文件(包含格式信息)。
验证在某些情况下有可能不会通过,比如传输格式不合格或者不被支持。若发生上述情况,那么一个Error
会被抛出。
deserializer.readValue()#
从缓冲区中反序列化一个JavaScript值,并返回它。
deserializer.transferArrayBuffer(id, arrayBuffer)#
id
<integer> 一个 32 位无符号整型arrayBuffer
<ArrayBuffer> | <SharedArrayBuffer>ArrayBuffer
实例
标记一个ArrayBuffer
, 表明它的内容正在被带外传输中。同时将ArrayBuffer
包裹于一个序列化的上下文内,之后将结果传入serializer.transferArrayBuffer()
中(当arrayBuffer
是ShareArrayBuffer
实例时,返回serializer._getSharedArrayBufferId()
产生的id
)
deserializer.getWireFormatVersion()#
- Returns: <integer>
读取底层的传输格式的版本。很可能有助于遗留代码来读取旧的传输格式版本。不可在.readHeader()
之前调用此方法。
deserializer.readUint32()#
- Returns: <integer>
读取并返回一个原始32位无符号整型。
用于一个自定义的deserializer._readHostObject()
。
deserializer.readUint64()#
- Returns: <Array>
读取一个原始64位无符号整型,将其拆分成一个包含两个32位无符号整型的[hi, lo]
数组,并返回此数组。
用于一个自定义的deserializer._readHostObject()
。
deserializer.readDouble()#
- Returns: <number>
读取一个JSnumber
值。
用于一个自定义的deserializer._readHostObject()
。
deserializer.readRawBytes(length)#
- Returns: <Buffer>
从反序列化机制的内部缓冲区中读取原始字节。length
必须和传入serializer.writeRawBytes()
中的缓冲区的长度相符。
用于一个自定义的serializer.writeRawBytes()
。
deserializer.\_readHostObject()#
此方法用来写出某种宿主对象,进一步说,是由绑定的原生C++代码所生成的一个对象。 如果无法序列化数据,那么一个恰当的异常会被抛出。
此方法在Deserializer
对象本身上是不存在的,但可有其子类提供。
class: v8.DefaultSerializer#
Serializer
的子类,用来将TypedArray
(尤其是Buffer
)和Dataview
序列化成一个宿主对象,并且对于它们底层的ArrayBuffer
,只有被它们实际指向的部分会被存储起来。
class: v8.DefaultDeserializer#
Deserializer
的一个子类,根据DefaultSerializer
的格式而定。