V8 是由 Chromium 项目为 Google Chrome 网页浏览器开发的开源 JavaScript 引擎。它是用 C++语言编写的,并且是一个轻量级的引擎,可以在很小的内存中运行。现在,它用于很多项目,比如 Couchbase、MongoDB、Node.js,等等。
Node.js V8 模块表示 V8 引擎的实例,可以通过 V8.createContext()方法创建一个上下文,然后通过 V8.runInContext()方法来执行 JavaScript 代码。
它提供v8.getHeapStatistics
和v8.getHeapSpaceStatistics
方法来获取堆空间的统计信息。
const v8 = require('v8')
该方法返回关于堆的统计数据,比如堆的大小,堆的使用情况等。
const v8 = require('v8')
console.log(v8.getHeapStatistics())
// {
// total_heap_size: 8589934592,
// total_heap_size_executable: 0,
// total_physical_size: 8589934592,
// total_available_size: 8589934592,
// used_heap_size: 8589934592,
// heap_size_limit: 8589934592,
// malloced_memory: 0,
// peak_malloced_memory: 0,
// does_zap_garbage: 0
// }
该方法返回关于堆空间的统计信息,比如堆空间的大小,堆空间的使用情况等。
const v8 = require('v8')
console.log(v8.getHeapSpaceStatistics())
// [
// {
// space_name: 'new_space',
// space_size: 8589934592,
// space_used_size: 0,
// space_available_size: 8589934592,
// physical_space_size: 8589934592
// },
// {
// space_name: 'old_space',
// space_size: 8589934592,
// space_used_size: 0,
// space_available_size: 8589934592,
// physical_space_size: 8589934592
// },
// {
// space_name: 'code_space',
// space_size: 8589934592,
// space_used_size: 0,
// space_available_size: 8589934592,
// physical_space_size: 8589934592
// },
// {
// space_name: 'map_space',
// space_size: 8589934592,
// space_used_size: 0,
// space_available_size: 8589934592,
// physical_space_size: 8589934592
// },
// {
// space_name: 'large_object_space',
// space_size: 8589934592,
// space_used_size: 0,
// space_available_size: 8589934592,
// physical_space_size: 8589934592
// },
// ]
目前,默认情况下,v8 在 32 位系统上的内存限制为 2GB,在 64 位系统上的内存限制为 4GB。