跳至主要内容

接口:IHeapEdge

IHeapEdge 实例表示堆快照中的 JS 引用。 堆快照通常是一个图,其中图节点是 JS 堆对象,图边是 JS 堆对象之间的 JS 引用。

readonly 不建议修改任何 IHeapEdge 实例

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

属性

edgeIndexnumber

此 JS 引用在 edge.snapshot.edges 伪数组中的索引


fromNodeIHeapNode

返回一个 IHeapNode 实例,表示此引用开始的宿主 JS 堆对象


is_indexboolean

如果为 true,则表示这是对数组元素或内部表元素的引用(edge.name_or_index 将返回一个数字),否则这是具有字符串名称的引用(edge.name_or_index 将返回一个字符串)


name_or_indexstring| number

JS 引用的名称。 如果是对数组元素或内部表元素的引用,则它是一个数字索引


snapshotIHeapSnapshot

获取包含此 JS 引用的 IHeapSnapshot


toNodeIHeapNode

返回一个 IHeapNode 实例,表示此引用指向的 JS 堆对象


to_nodenumber

此引用指向的 JS 堆对象的索引


typestring

JS 引用的类型,所有类型:contextelementpropertyinternalhiddenshortcutweak

方法

getJSONifyableObject()

转换为简洁的可读对象,可用于序列化(例如调用 JSON.stringify(node, ...args))。

此 API 不包含宿主对象捕获的所有信息。


toJSONString(...args)

转换为简洁的可读字符串输出(例如调用 JSON.stringify(node, ...args))。

注意:不建议使用 JSON.stringify(node, ...args),因为它会生成宿主对象的 JSON 表示,由于其与堆快照中数据结构的其他部分的连接,该表示太大而难以轻松读取。

此 API 不会完全序列化宿主对象捕获的所有信息。

  • 层级结构
  • 属性
    • edgeIndexnumber
    • fromNodeIHeapNode
    • is_indexboolean
    • name_or_indexstring | number
    • snapshotIHeapSnapshot
    • toNodeIHeapNode
    • to_nodenumber
    • typestring
  • 方法
    • getJSONifyableObject()
    • toJSONString(...args)