请教程序运行耗内存越来越多,最终停止的问题
我在while循环中放置一个CIN接口,CIN通过网口接收数据包,并提取需要的数据段组成数组输出至while循环中进行数据处理后在前面板显示波形等。问题是:可能CIN抓到数据包后并不释放内存,导致随着while循环进行中,内存越耗越多,最终未达到循环次数停止。查一些关于Labview内存管理的资料,有资料说SubVI调用完后会释放内存。我就将CIN接收数据包用一SubVI实现,问题仍然同样出现。恳请知情者帮助我解决此问题。致谢!通过CIN接收数据包代码如下: 可否考虑将CIN做成VI后动态调用呢??动调调用会自动释放内存的 还未用过动态调用,我试试!谢谢回复! “站立的鱼”,你好。你说的动态调用指的是“引用节点调用”吗?刚试了,问题还是如此,随着循环进行,内存越耗越多,最终停止。
谢谢指点!还有其它方法吗? 是不是那个shift register不断长大呢? 最上面那个很精和二维数组的移位寄存器! 它应该在不断地自增,所以内存会自动往上涨的!要到一定的程序,将它清空一下! coubbs你好,谢谢指点!这个二维的移位寄存器只是存储测试结果与标准值的比差,数据尽管随循环进行而增多,但应该不会大的(不会出现一次循环内存消耗增加2M的情况),我也希望一直保存这个结果。
看是否还有其它可能的问题? 您可以尝试一下是不是上面的原因!还有显示这一部分好像也会占内存的! 我去掉了移位寄存器,仍然是内存上涨,最后提示“VI在CIN处停止”后停止。
显示内存如何去掉?谢谢!
这个问题折腾我很长时间了,还望指点! 哪估计应该是CIN的问题了,有可能的话把它打成DLL,这样更方便点! 我看看程序先! 我把CIN改成CLF也试过了,还是内存越耗越多,最终停止。
用CIN停止时报错为:VI在代码接口节点处停止。谢谢! 看你的程序使用的是静态结构的地址
这样的话使用中是不释放内存的,
想想看有什么好的方法解决 在CINRun中不定义静态变量,程序运行起来依然如此。我也尝试了去掉移位寄存器,也没改善。
我想可能是我将CIN放在while循环中(每次循环CIN接收4000个数据包,即采样频率4K),而每次循环labview都会为CIN的输入输出数组新开一块内存,它并不覆盖以前的存储区。还有一个可能是CIN内部即C语言CINRun中定义的数组和指针(这些数组和指针保存有数据包和从数据包中提取的信息)在CINRun运行完后并没有释放内存,有这个可能吗?还望指点! 还请高手指点,这个问题我很弄一段时间了。我看见过有人已经能解决这个问题(当时不好请教),但是我经验不多,尽管尝试了很多方法,但还是搞不定。谢谢了!也可以根据你们的经验给我些建议。
页:
[1]
2