Usage in Deno
import * as mod from "node:v8";
cachedDataVersionTag
and getHeapStatistics
, serialize
and deserialize
are supported.
setFlagsFromStrings
is a noop.
Other APIs are not supported and will throw and error.
The node:v8
module exposes APIs that are specific to the version of V8 built into the Node.js binary. It can be accessed using:
import v8 from 'node:v8';
A subclass of Deserializer
corresponding to the format written by DefaultSerializer
.
A subclass of Serializer
that serializes TypedArray
(in particular Buffer
) and DataView
objects as host objects, and only
stores the part of their underlying ArrayBuffer
s that they are referring to.
Returns an integer representing a version tag derived from the V8 version,
command-line flags, and detected CPU features. This is useful for determining
whether a vm.Script
cachedData
buffer is compatible with this instance
of V8.
Uses a DefaultDeserializer
with default options to read a JS value
from a buffer.
Get statistics about code and its metadata in the heap, see
V8 GetHeapCodeAndMetadataStatistics
API. Returns an object with the
following properties:
Generates a snapshot of the current V8 heap and returns a Readable Stream that may be used to read the JSON serialized representation. This JSON stream format is intended to be used with tools such as Chrome DevTools. The JSON schema is undocumented and specific to the V8 engine. Therefore, the schema may change from one version of V8 to the next.
Returns statistics about the V8 heap spaces, i.e. the segments which make up
the V8 heap. Neither the ordering of heap spaces, nor the availability of a
heap space can be guaranteed as the statistics are provided via the
V8 GetHeapSpaceStatistics
function and may change from one V8 version to the
next.
Returns an object with the following properties:
This is similar to the queryObjects()
console API
provided by the Chromium DevTools console. It can be used to search for objects that have the matching constructor on its prototype chain
in the heap after a full garbage collection, which can be useful for memory leak regression tests. To avoid surprising results, users should
avoid using this API on constructors whose implementation they don't control, or on constructors that can be invoked by other parties in the
application.
Uses a DefaultSerializer
to serialize value
into a buffer.
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 API is a no-op if --heapsnapshot-near-heap-limit
is already set from the command line or the API is called more than once.
limit
must be a positive integer. See --heapsnapshot-near-heap-limit
for more information.
The v8.stopCoverage()
method allows the user to stop the coverage collection
started by NODE_V8_COVERAGE
, so that V8 can release the execution count
records and optimize code. This can be used in conjunction with takeCoverage if the user wants to collect the coverage on demand.
The v8.takeCoverage()
method allows the user to write the coverage started by NODE_V8_COVERAGE
to disk on demand. This method can be invoked multiple
times during the lifetime of the process. Each time the execution counter will
be reset and a new coverage report will be written to the directory specified
by NODE_V8_COVERAGE
.
Generates a snapshot of the current V8 heap and writes it to a JSON file. This file is intended to be used with tools such as Chrome DevTools. The JSON schema is undocumented and specific to the V8 engine, and may change from one version of V8 to the next.
Called immediately after a promise continuation executes. This may be after a then()
, catch()
, or finally()
handler or before an await after another await.
Called before a promise continuation executes. This can be in the form of then()
, catch()
, or finally()
handlers or an await resuming.
Key events in the lifetime of a promise have been categorized into four areas: creation of a promise, before/after a continuation handler is called or around an await, and when the promise resolves or rejects.
Called when a promise is constructed. This does not mean that corresponding before/after events will occur, only that the possibility exists. This will happen if a promise is created without ever getting a continuation.
Called when the promise receives a resolution or rejection value. This may occur synchronously in the case of Promise.resolve() or Promise.reject().
The promiseHooks
interface can be used to track promise lifecycle events.
The v8.startupSnapshot
interface can be used to add serialization and deserialization hooks for custom startup snapshots.