第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共7页LabVIEW程序的内存优化1一
VI在内存中的结构打开一个VI的属性面板(VIProperties),其中的“内存使用”(MemoryUsage)是用来查看这个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中使用与其前面板控件有关的属性节点(PropertyNode)会导致它的前面板被调入内存中,增加了内存开销,所以要尽量第2页共7页第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共7页避免在子VI中