哭瞎!labview总是因为内存问题卡掉怎么破!
在连续采集3次以后 labview因为缓存过大内存不够卡死了……
新手小妹现在求助各位大神 有不有一种方法可以不用停止labview程序的运行 就能释放缓存的?
或者缓存可以重复利用这个能实现不?
跪求各位大神的解答!
是报内存不足吧?
嗯嗯 有的时候报内存不足 有的时候直接卡掉了……
主动丢弃过时数据
自己在运行LabVIEW时候打开任务管理器,看LabVIEW内存有多大。
一般来说不会出现的。能简单截图程序才好看。
先搞清楚你是否需要一直continue进行采集? 如果需要建议用数据型的生产者与消费者结构,把采集的数据先丢到队列里面,然后消费者循环从队列里面取出数据进行操作。
是内存不足的话,说明你可能一直申请新的内存,而没用使用旧有的内存空间。你可以看看你的数组,方面是不是建了好多,特别要注意循环里面,如果有程序图可能比较能说明问题。,
是替换或者覆盖数组吗?
嗯这个方法可以,就是说你建立一个固定长度的数组当数据超过这个长度就把旧的数据覆盖掉,这个方法性能上还行,也可以建立一个固定长度的队列,使用“有损耗入队列”函数添加数据,这样就可以自动丢弃旧数据,但是性能上略低!
高性能的缓存重用要怎么设计?可惜labview中没有缓存释放的语句啊……
覆盖数组就可以了!或者队列也行。电脑编程不能追求完美,性能有时候是必须牺牲的。
数据需要计时处理掉,可以放在硬盘里,不要一直放在内存,那样内存开销太大
可以使用生产者和消费者模型,用数据队列来实现,采集队列事件不停地在采集数据将数据压入数据队列, 和记录队列事件,不停地从数据队列中取出。这样采集足够久都不会爆掉。 如果您想将采集的数据放到波形图中显示,也不要一次性全部放入,这样也会爆内存不足的,可以抽样(比如1000点取1个点)给一个预览波形图,再使用预览波形中中的游标或者使用滚动条,来截取预览波形图中某一段数据,根据X索引值,来读取文件中一段的数据到真实波形图中显示
具体问题不太清楚,我之前遇到的是需要对一个几百M的数据进行处理,一次性读进去,内存就直接不够了,解决办法:
1. 找一个大内存的机子
2. 使用队列处理
面板:应用程序控制-内存控制-请求释放内存
请问你解决了吗
可以用列队试试
有数据来就入对
出队保存数据
