@@ -271,6 +271,92 @@ buffers and external strings.
271271}
272272```
273273
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+
274360## ` v8.queryObjects(ctor[, options]) `
275361
276362<!-- YAML
@@ -1341,12 +1427,14 @@ writeString('hello');
13411427writeString (' 你好' );
13421428```
13431429
1430+ [ CppHeap ] : https://v8docs.nodesource.com/node-22.4/d9/dc4/classv8_1_1_cpp_heap.html
13441431[ HTML structured clone algorithm ] : https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
13451432[ Hook Callbacks ] : #hook-callbacks
13461433[ V8 ] : https://developers.google.com/v8/
13471434[ `--heapsnapshot-near-heap-limit` ] : cli.md#--heapsnapshot-near-heap-limitmax_count
13481435[ `AsyncLocalStorage` ] : async_context.md#class-asynclocalstorage
13491436[ `Buffer` ] : buffer.md
1437+ [ `CollectStatistics()` ] : https://v8docs.nodesource.com/node-22.4/d9/dc4/classv8_1_1_cpp_heap.html#a3a5d09567758e608fffde50eeabc2feb
13501438[ `DefaultDeserializer` ] : #class-v8defaultdeserializer
13511439[ `DefaultSerializer` ] : #class-v8defaultserializer
13521440[ `Deserializer` ] : #class-v8deserializer
@@ -1360,6 +1448,8 @@ writeString('你好');
13601448[ `async_hooks` ] : async_hooks.md
13611449[ `before` callback ] : #beforepromise
13621450[ `buffer.constants.MAX_LENGTH` ] : buffer.md#bufferconstantsmax_length
1451+ [ `cppgc::HeapStatistics struct` ] : https://v8docs.nodesource.com/node-22.4/df/d2f/structcppgc_1_1_heap_statistics.html
1452+ [ `cppgc::HeapStatistics` ] : https://v8docs.nodesource.com/node-22.4/d7/d51/heap-statistics_8h_source.html
13631453[ `deserializer._readHostObject()` ] : #deserializer_readhostobject
13641454[ `deserializer.transferArrayBuffer()` ] : #deserializertransferarraybufferid-arraybuffer
13651455[ `init` callback ] : #initpromise-parent
0 commit comments