首页 > 解决方案 > Node.js os.freemem() 无法正常工作

问题描述

我正在使用 Node.js Os 模块的这种方法:os.freemem()

这是我的示例代码:

const os = require('os');

const bytesToSize = (bytes) => {
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
if (bytes == 0) return '0 Byte';
const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
};

 console.log('free memory : ', bytesToSize(os.freemem()));
 console.log('total memory : ', bytesToSize(os.totalmem()));

运行代码后,我给出以下结果:

可用内存:164 MB

总内存:8 GB

但我的操作系统系统监视器告诉我:

操作系统空闲内存

为什么会有这样的差异?

标签: javascriptnode.js

解决方案


显然系统监视器不会显示可用内存,而是显示可用内存。

节点OS.freemem()free命令使用以下信息/proc/meminfo

klaimmore@klaimmore-HP-ZBook-14:/rep$ sudo cat /proc/meminfo | grep Mem
MemTotal:       16320372 kB
MemFree:         1274072 kB
MemAvailable:   10618284 kB
klaimmore@klaimmore-HP-ZBook-14:/rep$ node -p "require('os').freemem()/1024"
1254828
klaimmore@klaimmore-HP-ZBook-14:/rep$ free -k
              total        used        free      shared  buff/cache   available
Mem:       16320372     4684776     1273228      678996    10362368    10617452
Swap:       2097148           0     2097148

推荐阅读