NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

问一个释放内存的技术问题,困扰已久...

      去年做了一个项目,是一个仪表的上位机软件,里面有个功能是读取Access数据库中的数据,然后显示在一个表格里,数据包含序号、日期、各种数据等。是作为一个字符串数组显示在表格控件中的,这个表格控件是位于一个子VI中的,而这个子VI是动态调用的,但是有一个问题到现在都未能解决,就是当我显示表格数据的时候,由于数据量很大,占用了将近100M的内存,但是卸载该子VI后,内存基本没有减少,我这可是动态调用的,内存竟然卸载不掉! 还有系统提供了一个释放内存的函数,也是一点用都没有....

 

       经过我的实验发现,当在一个动态调用的子VI中创建一个除了字符串数组以外的任何类型的数组,卸载该VI后,占用的内存都能释放掉;如果创建的是一个字符串数组,则卸载该VI后,占用的内存几乎不变,除非退出整个LabVIEW程序。半年来都未找到原因和解决方案,求高手解答~

 

       下面附上实验程序,Main.vi 是主VI, StrArray.vi 和 OtherArray.vi 分别是创建字符串数组和其他类型数组(双精度数组,元素可以改为除了字符串以外的其他类型)的子VI,运行主VI后可以点击按钮调用相应的子VI并自动创建对应类型的数组,卸载相应的子VI后可以看到内存释放情况。8.6文件夹里的是8.6版本,其余的是2011版本。

 

0 项奖励
1 条消息(共 2 条)
3,749 次查看

同感,使用“新建数据值引用”也是,字符串数组无法释放内存;

创建4k一下的数据包(字符串、数值类型)都无法自动释放内存。

0 项奖励
2 条消息(共 2 条)
3,462 次查看