V8

该模块用于开放 Node.js 内建的 V8 引擎的事件和接口。这些接口由 V8 底层决定,所以无法保证绝对的稳定性。

getHeapStatistics()

返回一个带有下列属性的对象:

  1. {
  2. total_heap_size: 7326976,
  3. total_heap_size_executable: 4194304,
  4. total_physical_size: 7326976,
  5. total_available_size: 1152656,
  6. used_heap_size: 3476208,
  7. heap_size_limit: 1535115264
  8. }

getHeapSpaceStatistics()

返回和 V8 堆空间有关的统计数据,比如构成 V8 堆空间的段信息。由于堆空间的统计信息是由 V8 的 GetHeapSpaceStatistics 函数提供的,所以无法保证堆空间或者可用堆空间的顺序。

  1. [
  2. {
  3. "space_name": "new_space",
  4. "space_size": 2063872,
  5. "space_used_size": 951112,
  6. "space_available_size": 80824,
  7. "physical_space_size": 2063872
  8. },
  9. {
  10. "space_name": "old_space",
  11. "space_size": 3090560,
  12. "space_used_size": 2493792,
  13. "space_available_size": 0,
  14. "physical_space_size": 3090560
  15. },
  16. {
  17. "space_name": "code_space",
  18. "space_size": 1260160,
  19. "space_used_size": 644256,
  20. "space_available_size": 960,
  21. "physical_space_size": 1260160
  22. },
  23. {
  24. "space_name": "map_space",
  25. "space_size": 1094160,
  26. "space_used_size": 201608,
  27. "space_available_size": 0,
  28. "physical_space_size": 1094160
  29. },
  30. {
  31. "space_name": "large_object_space",
  32. "space_size": 0,
  33. "space_used_size": 0,
  34. "space_available_size": 1490980608,
  35. "physical_space_size": 0
  36. }
  37. ]

setFlagsFromString(string)

该方法用于添加额外的 V8 命令行标志。使用时需要注意,在 VM 启动后修改配置可能会发生不可预测的行为、崩溃和数据丢失,或者什么反应都没有。

通过 node --v8-options 命令可以查询当前 Node.js 环境中有哪些可用的 V8 options。此外,还可以参考非官方维护的一个 V8 options 列表,链接地址在这里 https://github.com/thlorenz/v8-flags/blob/master/flags-0.11.md

  1. // Print GC events to stdout for one minute.
  2. const v8 = require('v8');
  3. v8.setFlagsFromString('--trace_gc');
  4. setTimeout(function() { v8.setFlagsFromString('--notrace_gc'); }, 60e3);