feat: Show self and retained sizes for edges (#2529)

This required explicit tool calls so far but is pretty cheap to provide
directly.
This commit is contained in:
Dominik Inführ
2026-08-10 13:01:03 +02:00
committed by GitHub
parent c6f6e88199
commit 2a7eb76fb0
3 changed files with 69 additions and 69 deletions
+2 -2
View File
@@ -67,7 +67,7 @@ export class HeapSnapshotFormatter {
if (isNodeLike(firstItem)) {
lines.push('nodeId,nodeName,type,distance,selfSize,retainedSize');
} else if (isEdgeLike(firstItem)) {
lines.push('name,type,nodeId,nodeName');
lines.push('name,type,nodeId,nodeName,selfSize,retainedSize');
}
}
@@ -78,7 +78,7 @@ export class HeapSnapshotFormatter {
);
} else if (isEdgeLike(item)) {
lines.push(
`${item.name},${item.type},${item.node.id},${item.node.name}`,
`${item.name},${item.type},${item.node.id},${item.node.name},${formatBytesToKb(item.node.selfSize)},${formatBytesToKb(item.node.retainedSize)}`,
);
}
}
@@ -123,9 +123,9 @@ describe('HeapSnapshotFormatter', () => {
const result = HeapSnapshotFormatter.formatNodes(mockEdges);
const expected = [
'name,type,nodeId,nodeName',
'edge1,property,1,NodeA',
'edge2,element,2,NodeB',
'name,type,nodeId,nodeName,selfSize,retainedSize',
'edge1,property,1,NodeA,0.0 kB,0.0 kB',
'edge2,element,2,NodeB,0.0 kB,0.0 kB',
].join('\n');
assert.strictEqual(result, expected);
+64 -64
View File
@@ -295,72 +295,72 @@ value,count,totalSelfSize,totalRetainedSize,truncated,nodeIds
exports[`memory > get_heapsnapshot_edges > with pagination 1`] = `
## Heap Snapshot Data
name,type,nodeId,nodeName
constructor,property,25575,String
anchor,property,29295,anchor
name,type,nodeId,nodeName,selfSize,retainedSize
constructor,property,25575,String,0.1 kB,0.4 kB
anchor,property,29295,anchor,0.0 kB,0.0 kB
Showing 1-2 of 56 (Page 1 of 28).
Next page: 1
`;
exports[`memory > get_heapsnapshot_edges > with valid nodeId 1`] = `
## Heap Snapshot Data
name,type,nodeId,nodeName
constructor,property,25575,String
anchor,property,29295,anchor
at,property,29297,at
big,property,29299,big
blink,property,29301,blink
bold,property,29303,bold
charAt,property,29305,charAt
charCodeAt,property,29307,charCodeAt
codePointAt,property,29309,codePointAt
concat,property,29311,concat
endsWith,property,29313,endsWith
fontcolor,property,29315,fontcolor
fontsize,property,29317,fontsize
fixed,property,29319,fixed
includes,property,29321,includes
indexOf,property,29323,indexOf
isWellFormed,property,29325,isWellFormed
italics,property,29327,italics
lastIndexOf,property,29329,lastIndexOf
link,property,29331,link
localeCompare,property,29333,localeCompare
match,property,29335,match
matchAll,property,29337,matchAll
normalize,property,29339,normalize
padEnd,property,29341,padEnd
padStart,property,29343,padStart
repeat,property,29345,repeat
replace,property,29347,replace
replaceAll,property,29349,replaceAll
search,property,29351,search
slice,property,29353,slice
small,property,29355,small
split,property,29357,split
strike,property,29359,strike
sub,property,29361,sub
substr,property,29363,substr
substring,property,29365,substring
sup,property,29367,sup
startsWith,property,29369,startsWith
toString,property,29371,toString
toWellFormed,property,29373,toWellFormed
trim,property,29375,trim
trimStart,property,29377,trimStart
trimLeft,property,29377,trimStart
trimEnd,property,29379,trimEnd
trimRight,property,29379,trimEnd
toLocaleLowerCase,property,29381,toLocaleLowerCase
toLocaleUpperCase,property,29383,toLocaleUpperCase
toLowerCase,property,29385,toLowerCase
toUpperCase,property,29387,toUpperCase
valueOf,property,29389,valueOf
<symbol Symbol.iterator>,property,29391,[Symbol.iterator]
__proto__,property,25329,{constructor, __defineGetter__, __defineSetter__, …, get __proto__, set __proto__, toLocaleString}
properties,internal,29393,system / PropertyArray
map,internal,25577,system / Map
1,hidden,71,
name,type,nodeId,nodeName,selfSize,retainedSize
constructor,property,25575,String,0.1 kB,0.4 kB
anchor,property,29295,anchor,0.0 kB,0.0 kB
at,property,29297,at,0.0 kB,0.0 kB
big,property,29299,big,0.0 kB,0.0 kB
blink,property,29301,blink,0.0 kB,0.0 kB
bold,property,29303,bold,0.0 kB,0.0 kB
charAt,property,29305,charAt,0.0 kB,0.0 kB
charCodeAt,property,29307,charCodeAt,0.0 kB,0.0 kB
codePointAt,property,29309,codePointAt,0.0 kB,0.0 kB
concat,property,29311,concat,0.0 kB,0.0 kB
endsWith,property,29313,endsWith,0.0 kB,0.0 kB
fontcolor,property,29315,fontcolor,0.0 kB,0.0 kB
fontsize,property,29317,fontsize,0.0 kB,0.0 kB
fixed,property,29319,fixed,0.0 kB,0.0 kB
includes,property,29321,includes,0.0 kB,0.0 kB
indexOf,property,29323,indexOf,0.0 kB,0.0 kB
isWellFormed,property,29325,isWellFormed,0.0 kB,0.0 kB
italics,property,29327,italics,0.0 kB,0.0 kB
lastIndexOf,property,29329,lastIndexOf,0.0 kB,0.0 kB
link,property,29331,link,0.0 kB,0.0 kB
localeCompare,property,29333,localeCompare,0.0 kB,0.0 kB
match,property,29335,match,0.0 kB,0.0 kB
matchAll,property,29337,matchAll,0.0 kB,0.0 kB
normalize,property,29339,normalize,0.0 kB,0.0 kB
padEnd,property,29341,padEnd,0.0 kB,0.0 kB
padStart,property,29343,padStart,0.0 kB,0.0 kB
repeat,property,29345,repeat,0.0 kB,0.0 kB
replace,property,29347,replace,0.0 kB,0.0 kB
replaceAll,property,29349,replaceAll,0.0 kB,0.0 kB
search,property,29351,search,0.0 kB,0.0 kB
slice,property,29353,slice,0.0 kB,0.0 kB
small,property,29355,small,0.0 kB,0.0 kB
split,property,29357,split,0.0 kB,0.0 kB
strike,property,29359,strike,0.0 kB,0.0 kB
sub,property,29361,sub,0.0 kB,0.0 kB
substr,property,29363,substr,0.0 kB,0.0 kB
substring,property,29365,substring,0.0 kB,0.0 kB
sup,property,29367,sup,0.0 kB,0.0 kB
startsWith,property,29369,startsWith,0.0 kB,0.0 kB
toString,property,29371,toString,0.0 kB,0.0 kB
toWellFormed,property,29373,toWellFormed,0.0 kB,0.0 kB
trim,property,29375,trim,0.0 kB,0.0 kB
trimStart,property,29377,trimStart,0.0 kB,0.0 kB
trimLeft,property,29377,trimStart,0.0 kB,0.0 kB
trimEnd,property,29379,trimEnd,0.0 kB,0.0 kB
trimRight,property,29379,trimEnd,0.0 kB,0.0 kB
toLocaleLowerCase,property,29381,toLocaleLowerCase,0.0 kB,0.0 kB
toLocaleUpperCase,property,29383,toLocaleUpperCase,0.0 kB,0.0 kB
toLowerCase,property,29385,toLowerCase,0.0 kB,0.0 kB
toUpperCase,property,29387,toUpperCase,0.0 kB,0.0 kB
valueOf,property,29389,valueOf,0.0 kB,0.0 kB
<symbol Symbol.iterator>,property,29391,[Symbol.iterator],0.0 kB,0.0 kB
__proto__,property,25329,{constructor, __defineGetter__, __defineSetter__, …, get __proto__, set __proto__, toLocaleString},0.1 kB,0.3 kB
properties,internal,29393,system / PropertyArray,0.0 kB,0.0 kB
map,internal,25577,system / Map,0.0 kB,0.7 kB
1,hidden,71,,0.0 kB,0.0 kB
Showing 1-56 of 56 (Page 1 of 1).
`;
@@ -380,10 +380,10 @@ retainerCount: 3
exports[`memory > get_heapsnapshot_retainers > with valid nodeId 1`] = `
## Heap Snapshot Data
name,type,nodeId,nodeName
prototype,internal,29287,system / Map
prototype,property,25575,String
initial_string_prototype,internal,7199,system / NativeContext
name,type,nodeId,nodeName,selfSize,retainedSize
prototype,internal,29287,system / Map,0.0 kB,0.1 kB
prototype,property,25575,String,0.1 kB,0.4 kB
initial_string_prototype,internal,7199,system / NativeContext,1.2 kB,84.4 kB
Showing 1-3 of 3 (Page 1 of 1).
`;