灵闪task配置出现内存上涨和内存突增现象,如何优化task¶
来源:原始帖子
日期:2025-12-08T08:03:38.000Z
问题描述¶
1.类似统计工具OKNG的最大样本数默认为0,会导致内存增加,修改为1000可解决
还有没有更多的优化思路和方向
回复 1¶
统计工具内部是有默认上限的,如果没有配置最大样本数量(也就是默认0),最大存储最近的1000000个double类型数据,也就是大概4mb的数据。理论上是不会观察到内存上涨的问题。如果的确存在这样的现象,那更多考虑是ui或上层由于数据变多占用了内存。@测试同学,复现这个问题。并记录bug单。
回复 2¶
猜测1:图像缓冲区中积累过多图像¶
图像缓冲区中积累过多的图像时,灵闪软件占用的内存上涨是最显著的,所以,这是第一个怀疑的原因。
出现这种情况,有如下可能的原因和解决方法:
- Task 耗时过长导致图片来不及处理,而形成缓冲区中图片积压,这是很常见的一种情况,参考这个问题中的答案;
- 单张图片的分辨率极高,例如2亿像素,可能造成灵闪软件内部图像拷贝时长较长,这种情况没有特别好的解决方法,只能通过减小触发频次、软件本身性能优化(例如减少图像拷贝次数)和增加硬件性能来解决;
- 短时间内突发多次触发,有时整个视觉系统也可能发生产线变速或误触发导致的,短时间内触发采图次数远高于平均水平的情况,这也可能会导致缓冲区图片瞬间积压过多。
猜测2:各种带缓存的算法工具积累的数据过多¶
比如图像融合工具和收集工具,会动态收集图像,可能存在让内存占用显著升高的风险,需限定其缓存图像的总数。
猜测3:可以输出容器的算法工具输出过多¶
比如多斑点工具,1个输出斑点和1000个输出斑点占用的内存相差10MB+。如果短时间内出现巨量的斑点输出,才有可能导致内存显著上涨。
类似的工具也包括多模板图像匹配、多轮廓定位之类,但它们在输出海量目标时的内存占用远低于斑点。
猜测4:循环工具¶
配置了循环工具的Task,可能因为特定的图中被循环的容器内容突增,导致后续通过循环工具输出的数据增加很多倍,尤其是在循环结束时收集了图片输出的情况。
解决方法通常是在循环开始前,过滤被循环的容器中明显不需要被处理的元素,尽量减少被循环容器中的元素数量。
编辑说明
本节内容由知识库帖子自动转换生成,如有术语错误请联系文档维护人员。