树莓派3脚本RAM的使用

我正在使用树莓派3从设备中提取串行数据(USB),然后使用websockets将这些数据发送到客户端。 所有在NodeJS上运行。

为了从设备中获取数据,我们使用modbus-rtu,但是我们有一个内存问题。 脚本在1-2小时后停止工作。 我们发现.readHoldingRegisters()会在一段时间后增加我们的内存使用量。

任何提示解决scheme?

在一个ram约束环境(小于1.5gb可用于节点)中,首先要处理节点是告诉节点本身,因为它似乎不能自己知道。

如果你不认为它有至less1.4Gb可用,并且节点GC是懒惰的意思,它会等到这个限制释放大量的内存。 所以在1Gb内存的Rasberry Pi 3上做的第一件事就是尽快强制GC,比如500M的内存。

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

这将迫使GC更早采取行动(旧的空间大小不是节点的唯一的内存空间,但是它是最大的,所以GC应该围绕500/600 Mb的节点进程)

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

如果您在此之后仍然遇到麻烦,您确实有泄漏(内存垃圾无法检索)。

Interesting Posts