Raspberry Pi 3 脚本 RAM 使用情况

Raspberry Pi 3 script RAM usage

我正在使用 raspberry pi 3 从设备中提取串行数据 (USB),然后使用 websockets 将此数据发送到客户端。全部在 NodeJS 上运行。

我们使用 modbus-rtu 从设备中提取数据,但我们遇到了 ram 问题。脚本在 1-2 小时后停止工作。我们发现 .readHoldingRegisters() 会在一段时间后增加我们的 RAM 使用量。

有什么解决方法吗?

在 ram 约束环境(小于 1.5gb 可用于节点)中对节点做的第一件事是告诉节点本身,因为,它似乎不能自己知道。

如果您不这样做,GC 假设它至少有 1.4Gb 可用,并且节点 GC 是 lazy 意思,它将等待到该限制以释放大量内存.因此,在具有 1Gb 内存的 Rasberry Pi 3 上要做的第一件事就是尽快强制执行 GC,例如 500Mb 内存。

node script.js --max-old-space-size=500 

它会强制GC更快地行动(旧的space大小不是节点唯一的内存space,但它是最大的,所以GC应该围绕500个节点进程行动/600 兆)

GC 是一个同步操作(因此是惰性模式),它会影响性能,因此您可能需要微调限制。

如果此后您仍然遇到问题,则您确实有泄漏(内存垃圾无法检索)。