Node.js(v14.8.0) 笔记 01 v8
v8引擎
-
v8.cachedDataVersionTag() v8.0.0
返回: integer
返回一个整数,表示从 V8 版本、命令行标志、以及检测到的 CPU 特性派生的版本标记。
这对于判断 vm.Script 的 cachedData buffer 是否与此 V8 实例兼容非常有用。 -
v8.getHeapSpaceStatistics() v11.13.0
返回: <Object[]>
返回有关 V8 堆空间的统计信息,即组成 V8 堆的片段。
由于统计信息是通过 V8 的 GetHeapSpaceStatistics 函数提供的,
因此可以保证堆空间的排序以及堆空间的可用性,并且可以从一个 V8 版本更改为下一个版本。- space_name
- space_size
- space_used_size
- space_available_size
- physical_space_size
- space_name
-
v8.getHeapSnapshot() v11.13.0
返回: stream.Readable 包含 V8 堆快照的可读流。
生成当前 V8 堆的快照,并返回可读流,该可读流可用于读取 JSON 序列化表示。
此 JSON 流格式旨在与 Chrome DevTools 等工具一起使用。
JSON 模式未记录且特定于V8引擎,并且可能从 V8 的一个版本更改为下一个版本。 -
v8.getHeapStatistics()
返回: Object
- total_heap_size
- total_heap_size_executable
- total_physical_size
- total_available_size
- used_heap_size
- heap_size_limit
- malloced_memory
- peak_malloced_memory
- does_zap_garbage
- number_of_native_contexts
- number_of_detached_contexts
- does_zap_garbage 是一个 0/1 布尔值,表示是否启用了 –zap_code_space 选项。 这使得 V8 用位模式覆盖堆垃圾。
RSS 占用空间(常驻内存集)会变得越来越大,因为它不断触及所有堆页面,这使得它们不太可能被操作系统交换出。 - number_of_native_contexts native_context 的值是当前活动的顶层上下文的数量。
随着时间的推移,此数字的增加表示内存泄漏。 - number_of_detached_contexts detached_context 的值是已分离但尚未回收垃圾的上下文数。
该数字不为零表示潜在的内存泄漏。
- does_zap_garbage 是一个 0/1 布尔值,表示是否启用了 –zap_code_space 选项。 这使得 V8 用位模式覆盖堆垃圾。
- total_heap_size
-
v8.getHeapCodeStatistics() v12.8.0
返回: Object
- code_and_metadata_size
- bytecode_and_metadata_size
- external_script_source_size
- code_and_metadata_size
-
v8.setFlagsFromString(flags)
flags : string
v8.setFlagsFromString() 方法可用于以编程方式设置 V8 的命令行标志。
应谨慎使用此方法。虚拟机启动后更改设置可能会导致不可预测的行为,包括崩溃和数据丢失,或者它可能根本就什么都不做。
可以通过运行 node –v8-options 来检测可用于 Node.js 版本的 V8 选项。 -
v8.writeHeapSnapshot([filename]) v11.13.0
- filename: string
要保存 V8 堆快照的文件路径。
如果未指定,则将会生成具有 ‘Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot’ 模式的文件名,
其中 {pid} 将会是 Node.js 进程的 PID,
{thread_id} 将会为 0(当从主 Node.js 线程调用 writeHeapSnapshot() 时)或工作线程的 id。 - 返回: string 保存快照的文件名。
- filename: string