关于labview上位机内存不断增加的原因和解决方案

最近接手的一个项目,上位机包含串口读写、数据库读写、3D图形模拟仿真、数据列表的处理等等模块。在运行时上位机内存以8M/s的速度占用电脑内存,最终导致“内存已满”报警或labview软件崩溃,这是大概率出现了内存占用、内存泄露的问题。面对这个问题是很棘手的,因为项目即将收尾,修改和查找的工作量非常大。所以给各位新人入门建议,打好基础很重要,要有良好的编程风格和设计框架,注释要编辑号标记好,还要有不断的走读代码的习惯,减少后面翻查的工作量。

导致内存占用和泄露的主要原因有以下几个:

1、过度的使用索引数组、创建数组和连接字符串。数组处理要先初始化一个常量,然后使用数组插入或替换数组子集来减小内存开销。由于采集的数据本来就很大,在循环中又使用创建数组函数,由于该函数没有指定大小,每次加入新的数据时,要不断调整增加数组大小,但是labview不能判断原来的数据是否还有其他用处,所以每次调整数组大小都会复制一份新数据,这样内存开销非常大。

2、频繁打开引用开关。如打开数据库、打开二进制文本文件(ini文件)、打开串口、获取队列等等。不仅会占用内存,还可能会导致串口死掉。

3、3D图形创建不要放在循环里面。创建一个柱面或曲面等在循环里会不断的复制副本,导致占用非常多的内存,这就是我这个项目出现8M/s增加内存的主要原因。

4、大数组、簇等控件函数的强制类型的转换。这个不说了,百度也能讲的很详细。

怎样去查找定位内存占用发生的vi?建议用以下方法:

1、使用labview自带调试工具,高显常亮、性能分析工具这些能大概分析到哪个vi出了问题。

2、使用禁用程序选框,在上一步定位的vi一步步屏蔽掉一些节点,就能找出具体问题的位置。

踩过的坑,希望能帮助到大家。labview想深入学习到机器视觉+运动控制,需要学习更多,一起加油吧。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值