遇到问题:
在运行lua脚本时,出现下面报错说内存不足:
>lua -e "io.stdout:setvbuf 'no'" "最大值最小值检查.lua"
lua: not enough memory
>Exit code: 1
原因是,lua解释器是32位的,它的内存大小只有2GB,当它内存不够时就会出现上述提示。lua语言虽然会自己回收释放掉的资源,但是,它的回收机制并不是实时回收的,而是,他会将脚本中无用了的变量进行标记,然后等到一个合适的机会进行回收。所以当循环次数特别多时,就有可能造成内存不足。
我们可以验证一下是否是这个原因:
我在代码循环中加入了 check.LogError(string.format("内存占用:%s", collectgarbage("count")))
【后面介绍】,运行显示:
有上图可知,大概在内存占用 1737872.5029297KB(大概为1.7G左右)时 显示内存不足,所以上面的结论是正确的。其实lua中提供了垃圾回收函数——collectgarbage()。用户可以强制清除无用的垃圾数据。
所以,