接口:IHeapEdge
IHeapEdge
实例表示堆快照中的 JS 引用。 堆快照通常是一个图,其中图节点是 JS 堆对象,图边是 JS 堆对象之间的 JS 引用。
readonly
不建议修改任何 IHeapEdge
实例
- 示例:V8 或 hermes 堆快照可以通过 getFullHeapFromFile API 解析。
import type {IHeapSnapshot, IHeapEdge} from '@memlab/core';
import {dumpNodeHeapSnapshot} from '@memlab/core';
import {getFullHeapFromFile} from '@memlab/heap-analysis';
(async function () {
const heapFile = dumpNodeHeapSnapshot();
const heap: IHeapSnapshot = await getFullHeapFromFile(heapFile);
// iterate over each edge (JS reference in heap)
heap.edges.forEach((edge: IHeapEdge, i: number) => {
// use the heap edge APIs here
const nameOrIndex = edge.name_or_index;
// ...
});
})();
层级结构
IHeapEdgeBasic
↳
IHeapEdge
属性
edgeIndex:number
此 JS 引用在 edge.snapshot.edges
伪数组中的索引
fromNode:IHeapNode
返回一个 IHeapNode 实例,表示此引用开始的宿主 JS 堆对象
is_index:boolean
如果为 true
,则表示这是对数组元素或内部表元素的引用(edge.name_or_index
将返回一个数字),否则这是具有字符串名称的引用(edge.name_or_index
将返回一个字符串)
name_or_index:string
| number
JS 引用的名称。 如果是对数组元素或内部表元素的引用,则它是一个数字索引
snapshot:IHeapSnapshot
获取包含此 JS 引用的 IHeapSnapshot
toNode:IHeapNode
返回一个 IHeapNode 实例,表示此引用指向的 JS 堆对象
to_node:number
此引用指向的 JS 堆对象的索引
type:string
JS 引用的类型,所有类型:context
、element
、property
、internal
、hidden
、shortcut
、weak
方法
getJSONifyableObject()
转换为简洁的可读对象,可用于序列化(例如调用 JSON.stringify(node, ...args)
)。
此 API 不包含宿主对象捕获的所有信息。
- 返回值:
AnyRecord
- 来源:
toJSONString(...args
)
转换为简洁的可读字符串输出(例如调用 JSON.stringify(node, ...args)
)。
注意:不建议使用 JSON.stringify(node, ...args)
,因为它会生成宿主对象的 JSON 表示,由于其与堆快照中数据结构的其他部分的连接,该表示太大而难以轻松读取。
此 API 不会完全序列化宿主对象捕获的所有信息。
- 参数:
...args
:any
[]
- 返回值:
string
- 来源: