filename{string} 要保存 V8 堆快照的文件路径。 如果未指定,则将会生成具有'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'模式的文件名, 其中{pid}将会是 Node.js 进程的 PID,{thread_id}将会为0(当从主 Node.js 线程调用writeHeapSnapshot()时)或工作线程的 id。- 返回: {string} 保存快照的文件名。
生成当前 V8 堆的快照并将其写入 JSON 文件。 此文件旨在与 Chrome DevTools 等工具一起使用。 JSON 模式未记录且特定于V8引擎,并且可能从 V8 的一个版本更改为下一个版本。
堆快照特定于单个 V8 隔离。 使用[工作线程][worker threads]时,从主线程生成的堆快照将不包含有关工作线程的任何信息,反之亦然。
const { writeHeapSnapshot } = require('v8');const {Worker,isMainThread,parentPort} = require('worker_threads');if (isMainThread) {const worker = new Worker(__filename);worker.once('message', (filename) => {console.log(`工作线程的堆转储: ${filename}`);// 获取主线程的堆转储。console.log(`主线程的堆转储: ${writeHeapSnapshot()}`);});// 通知工作线程创建一个堆转储。worker.postMessage('heapdump');} else {parentPort.once('message', (message) => {if (message === 'heapdump') {// 为工作线程生成一个堆转储,并返回文件名到父线程。parentPort.postMessage(writeHeapSnapshot());}});}
