为了对我正在构建的项目进行压力测试,我需要编写一个Node脚本,尝试使用机器上所有可用的RAM - 允许我测试我是否有检测和终止的机制这种失控的过程是有效的。
我写了这个剧本:
let buffer = [];
const MB = (bytes) => Math.round(bytes/1024/1024) + 'MB'
const memoryUsage = () => {
const mem = process.memoryUsage();
return MB(mem.rss) + '\t' + MB(mem.heapTotal) + '\t' + MB(mem.external);
}
setInterval(()=>{
buffer.push(Buffer.alloc(1024 * 1024* 1024)); // Eat 1GB of RAM every second
console.log(buffer.length + '\t' + memoryUsage());
}, 1000);
尝试每秒分配一个GB或RAM。
200秒,这是我的控制台输出:
196 28MB 7MB 200704MB
197 28MB 7MB 201728MB
198 28MB 7MB 202752MB
199 28MB 7MB 203776MB
200 28MB 7MB 204800MB
201 28MB 7MB 205824MB
202 28MB 7MB 206848MB
203 28MB 7MB 207872MB
204 28MB 7MB 208896MB
205 28MB 7MB 209920MB
这是htop中的RAM使用情况:
我的问题是:
这是在官方Nodejs 8 Docker容器内运行的。
答案 0 :(得分:0)
使用内存。即使您认为已经分配了它,在您使用它之前可能并非如此。用零,随机数或其他任何东西填充它。