感谢您的解答,但是我不理解为什么数据保存循环跟不上数据处理循环会导致内存不断上升?它不能保存一次后就释放一次数据占用的内存吗?
而且我现在把给数据保存循环传数据的队列和数据保存循环用条件禁用框禁用起来,
前面板用tab control放各显示控件,页面停留在波形刷新页面并运行一日夜后内存稳定不变,
然后我要看另一页的数据内容时发现,一开始tab control各页面间每切换一次内存上升一点,连续切换十几次后内存又稳定不上升但是不会释放之前增长的,过了一个上午再次切换后内存又会上升一点,切换几次后内存又稳定不上升但仍不会释放之前增长的。
我不能理解这是程序的问题还是LabVIEW的问题又或者是wince操作系统的问题?
再次感谢您的解答!
> 但是我不理解为什么数据保存循环跟不上数据处理循环会导致内存不断上升?
数据在数据处理循环中被加入Q, 导致内存不断上升.
> 它不能保存一次后就释放一次数据占用的内存吗?
不会. allocate/reallocate memory 较慢(与LabVIEW无关, Windows的故事), 所以一但allocate, 不会释放, 以备后用.
每个 Chart 有自己的 buffer.
你的程序没有妥善处理"退出". 通常在退出时, 调用 release queue 来释放内存.
所以即使这里把"队列最大值"设为有限值,但是只要数据保存循环的速度不能变快,就会导致内存不断增长了,对吗?
这里没有调用“释放队列”是因为需要这个程序连续采集数据,不需要的时候直接关闭整个机器,于是把“释放队列”放在循环框外了。
感谢您的解答!!