javascript - 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
但我的操作系统系统监视器告诉我:
为什么会有这样的差异?
解决方案
显然系统监视器不会显示可用内存,而是显示可用内存。
节点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
推荐阅读
- python-3.x - 如何抓取无法检查的数据和内部的数据
- javascript - 如何使用范围接口在双击时选择一个单词?
- java - Java Generic:如何扩展另一个泛型类的泛型类
- angular - 从 mergeMap 返回的 observable 无法捕获错误
- javascript - 用css将文本消失
- python - 尝试 Skimage.Filter 中的所有阈值
- java - 如何在不同项目中使用 Gradle 中的父级?
- telnet - How to connect with sshd?
- angular - 为每个文件夹自定义 TypeScript 编译器选项
- rest - 带有不记名令牌的 SharePoint 搜索 REST API 返回错误的项目数