下载后可任意编辑 LabVIEW 程序的内存优化 1 一
VI 在内存中的结构 打开一个 VI 的属性面板(VI Properties),其中的“内存使用”(Memory Usage)是用来查看这个 VI 内存占用情况的
它显示了一个 VI 内存占用所包含的四个主要部分:前面板、框图、代码和数据,以及这四个部分的总和
但在打开一个 VI 时,这四段内容并不是同时都会被 LabVIEW 调入内存的
当我们打开一个主 VI 时,主 VI 连同它的所有子 VI 的代码和数据段都会被调入内存
由于主 VI 的前面板一般情况下是打开的,它的前面板也就同时被调入内存
但是此时主 VI 的框图和子 VI 的前面板、框图并没有被调入内存
只有当主动查看主 VI 的框图或是打开子 VI 的前面板和框图时,它们才会被调入
基于 LabVIEW 的这种内存管理的特性,我们在编写 VI 的时候可以通过以下方法来优化 LabVIEW 程序的内存使用
第一,把一个复杂 VI 分解为数个子 VI
子 VI 的使用会增添额外的前面板和框图的空间,但并不增添额外的代码和数据空间
由于程序运行时只有代码和数据被调入内存,因此使用子 VI 不会占用额外的内存
使用子 VI 的好处还在于当子 VI 运行结束时,LabVIEW 可以及时收回子 VI 的数据空间,从而改善了内存的使用效率
第二,在没有必要时不要设置子 VI 的重入(Reentrant)属性
重入型 VI 每次运行时都会对自己使用的数据生成一个副本,这增加了内存开销
第三,主 VI 的面板通常就是用户界面,需要显示给用户
但是要尽量避开开启子 VI 前面板
比如,在子 VI 中使用与其前面板控件有关的属性节点(Property Node)会导致它的前面板被调入内存中,增加了内存开销,所以要尽量避开在子 VI 中使用主面板控件的属性节点来设置