@@ -271,6 +271,92 @@ buffers and external strings.
271
271
}
272
272
```
273
273
274
+ ## ` 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
+
274
360
## ` v8.queryObjects(ctor[, options]) `
275
361
276
362
<!-- YAML
@@ -1343,12 +1429,14 @@ writeString('hello');
1343
1429
writeString (' 你好' );
1344
1430
```
1345
1431
1432
+ [ CppHeap ] : https://v8docs.nodesource.com/node-22.4/d9/dc4/classv8_1_1_cpp_heap.html
1346
1433
[ HTML structured clone algorithm ] : https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
1347
1434
[ Hook Callbacks ] : #hook-callbacks
1348
1435
[ V8 ] : https://developers.google.com/v8/
1349
1436
[ `--heapsnapshot-near-heap-limit` ] : cli.md#--heapsnapshot-near-heap-limitmax_count
1350
1437
[ `AsyncLocalStorage` ] : async_context.md#class-asynclocalstorage
1351
1438
[ `Buffer` ] : buffer.md
1439
+ [ `CollectStatistics()` ] : https://v8docs.nodesource.com/node-22.4/d9/dc4/classv8_1_1_cpp_heap.html#a3a5d09567758e608fffde50eeabc2feb
1352
1440
[ `DefaultDeserializer` ] : #class-v8defaultdeserializer
1353
1441
[ `DefaultSerializer` ] : #class-v8defaultserializer
1354
1442
[ `Deserializer` ] : #class-v8deserializer
@@ -1362,6 +1450,8 @@ writeString('你好');
1362
1450
[ `async_hooks` ] : async_hooks.md
1363
1451
[ `before` callback ] : #beforepromise
1364
1452
[ `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
1365
1455
[ `deserializer._readHostObject()` ] : #deserializer_readhostobject
1366
1456
[ `deserializer.transferArrayBuffer()` ] : #deserializertransferarraybufferid-arraybuffer
1367
1457
[ `init` callback ] : #initpromise-parent
0 commit comments