◐ Shell
clean mode source ↗

v8: add v8.getCppHeapStatistics() method · nodejs/node@a22c21c

@@ -271,6 +271,92 @@ buffers and external strings.

271271

}

272272

```

273273274+

## `v8.getCppHeapStatistics([detailLevel])`

275+276+

Retrieves [CppHeap][] statistics regarding memory consumption and

277+

utilization using the V8 [`CollectStatistics()`][] function which

278+

may change from one V8 version to the

279+

next.

280+281+

* `detailLevel` {string|undefined}: **Default:** `'detailed'`.

282+

Specifies the level of detail in the returned statistics.

283+

Accepted values are:

284+

* `'brief'`: Brief statistics contain only the top-level

285+

allocated and used

286+

memory statistics for the entire heap.

287+

* `'detailed'`: Detailed statistics also contain a break

288+

down per space and page, as well as freelist statistics

289+

and object type histograms.

290+291+

It returns an object with a structure similar to the

292+

[`cppgc::HeapStatistics`][] object. See the [V8 documentation][`cppgc::HeapStatistics struct`]

293+

for more information about the properties of the object.

294+295+

```js

296+

// Detailed

297+

({

298+

committed_size_bytes: 131072,

299+

resident_size_bytes: 131072,

300+

used_size_bytes: 152,

301+

space_statistics: [

302+

{

303+

name: 'NormalPageSpace0',

304+

committed_size_bytes: 0,

305+

resident_size_bytes: 0,

306+

used_size_bytes: 0,

307+

page_stats: [{}],

308+

free_list_stats: {},

309+

},

310+

{

311+

name: 'NormalPageSpace1',

312+

committed_size_bytes: 131072,

313+

resident_size_bytes: 131072,

314+

used_size_bytes: 152,

315+

page_stats: [{}],

316+

free_list_stats: {},

317+

},

318+

{

319+

name: 'NormalPageSpace2',

320+

committed_size_bytes: 0,

321+

resident_size_bytes: 0,

322+

used_size_bytes: 0,

323+

page_stats: [{}],

324+

free_list_stats: {},

325+

},

326+

{

327+

name: 'NormalPageSpace3',

328+

committed_size_bytes: 0,

329+

resident_size_bytes: 0,

330+

used_size_bytes: 0,

331+

page_stats: [{}],

332+

free_list_stats: {},

333+

},

334+

{

335+

name: 'LargePageSpace',

336+

committed_size_bytes: 0,

337+

resident_size_bytes: 0,

338+

used_size_bytes: 0,

339+

page_stats: [{}],

340+

free_list_stats: {},

341+

},

342+

],

343+

type_names: [],

344+

detail_level: 'detailed',

345+

});

346+

```

347+348+

```js

349+

// Brief

350+

({

351+

committed_size_bytes: 131072,

352+

resident_size_bytes: 131072,

353+

used_size_bytes: 128864,

354+

space_statistics: [],

355+

type_names: [],

356+

detail_level: 'brief',

357+

});

358+

```

359+274360

## `v8.queryObjects(ctor[, options])`

275361276362

<!-- YAML

@@ -1343,12 +1429,14 @@ writeString('hello');

13431429

writeString('你好');

13441430

```

134514311432+

[CppHeap]: https://v8docs.nodesource.com/node-22.4/d9/dc4/classv8_1_1_cpp_heap.html

13461433

[HTML structured clone algorithm]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm

13471434

[Hook Callbacks]: #hook-callbacks

13481435

[V8]: https://developers.google.com/v8/

13491436

[`--heapsnapshot-near-heap-limit`]: cli.md#--heapsnapshot-near-heap-limitmax_count

13501437

[`AsyncLocalStorage`]: async_context.md#class-asynclocalstorage

13511438

[`Buffer`]: buffer.md

1439+

[`CollectStatistics()`]: https://v8docs.nodesource.com/node-22.4/d9/dc4/classv8_1_1_cpp_heap.html#a3a5d09567758e608fffde50eeabc2feb

13521440

[`DefaultDeserializer`]: #class-v8defaultdeserializer

13531441

[`DefaultSerializer`]: #class-v8defaultserializer

13541442

[`Deserializer`]: #class-v8deserializer

@@ -1362,6 +1450,8 @@ writeString('你好');

13621450

[`async_hooks`]: async_hooks.md

13631451

[`before` callback]: #beforepromise

13641452

[`buffer.constants.MAX_LENGTH`]: buffer.md#bufferconstantsmax_length

1453+

[`cppgc::HeapStatistics struct`]: https://v8docs.nodesource.com/node-22.4/df/d2f/structcppgc_1_1_heap_statistics.html

1454+

[`cppgc::HeapStatistics`]: https://v8docs.nodesource.com/node-22.4/d7/d51/heap-statistics_8h_source.html

13651455

[`deserializer._readHostObject()`]: #deserializer_readhostobject

13661456

[`deserializer.transferArrayBuffer()`]: #deserializertransferarraybufferid-arraybuffer

13671457

[`init` callback]: #initpromise-parent