const process = require("process");
const mem = process.memoryUsage();
const MAX_SIZE = 50; // Change the value to what you want
if ((mem.heapUsed / 1000000) >= MAX_SIZE) {
videoTranscoder.kill(); // Just an example...
}
import * as v8 from 'node:v8';
const maxHeap = v8.getHeapStatistics().heap_size_limit;
// get the percentage of the max heap currently in use
function getPercentOfMaxHeapInUse() {
return v8.getHeapStatistics().used_heap_size / maxHeap;
}
// error out if over 80% of the heap is in use
if (getPercentOfMaxHeapInUse() > 0.8) {
throw new Error('using too much memory');
}
您可以使用--max_old_space_size标志修改最大堆空间,如下所示:
# set the heap max to 3 GB (1024 * 3)
node --max_old_space_size=3072 index.js
2条答案
按热度按时间vd8tlhqk1#
您可以看到内置的
process
模块使用了多少内存。process
模块有一个名为memoryUsage
的方法,它显示了Node.js中的内存使用信息。当您运行代码时,您应该看到一个对象,其中包含内存使用所需的所有信息!
以下是对每个属性的一些见解。
rss
-(驻留集大小)在主存储器设备中占用的空间量。heapTotal
-V8引擎中的内存总量。heapUsed
-V8引擎使用的内存量。external
-绑定到JavaScript对象的C++对象的内存使用情况(由V8管理)。arrayBuffers
-为ArrayBuffer
% s和Buffer
% s分配的内存。对于您的问题,您可能需要使用
heapTotal
和heapUsed
。根据值,您可以关闭服务。例如:除以100万的部分只是将字节转换为兆字节(B到MB)。
将代码更改为您喜欢的代码-这只是一个示例。
uqcuzwp82#
使用
v8.getHeapStatistics()
。它比process.memoryUsage()
提供的信息更多。特别是,它包括heap_size_limit
,可以告诉您Node.js进程内存的真实限制。您可以使用
--max_old_space_size
标志修改最大堆空间,如下所示: