写了个需要长时间运行的程序,没做内存优化,于是,程序内存、我、老大、客户都炸了。 一 查看内存使用情况1 未运行的程序所占内存文件-VI属性-内存使用 2 查看运行中的VI所用时间及内存使用情况工具-性能分析-性能和内存 3 显示所分配缓冲区工具-性能分析-显示缓冲区分配 二 内存优化1 如非必要,不要将VI属性设置为重入做了这么个子VI 共享副本重入执行,当框图内多个相同子vi时,执行时系统会根据是否需要同时执行来创建独立的内存空间,如果任意时刻仅有一个vi在运行,则系统就只会创建一个独立的内存空间,若多个同时运行时,同时系统就会创建多个独立的内存空间。 2 使用“请求释放内存”函数3 使用移位寄存器或元素同址操作结构此程序先构造数组再对其中几个特定位置的值进行替换,每一步操作都新开一块缓存保存运算结果副本。
4 尽量避免开启子VI前面板非得开启的时候,如果子VI前面板上有数据量大的控件(表格、图表等等),在关闭的时候记得释放。 5 可以将复杂VI拆分成几个子VI这个操作并不会增加额外的数据空间和代码,而且在子VI运行结束的时候,可以及时收回子VI数据空间。 6 避免内存泄漏LabVIEW是可以自动管理内存的,适当的时候分配或回收资源。一般就反复打开某资源之后没关闭会出现内存泄漏。 |
|