微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > labview内存泄露原因总结

labview内存泄露原因总结

时间:10-02 整理:3721RD 点击:
1 文件I/O
若单循环使用文件I/O打开文件,获取句柄但不释放
每隔一段时间,内 存占用会增加4k
泄漏速度与文件大小无关
特意编写了一个测试程序,使用打开文件函数逐个打开二十多个15M的文本文件而不释放句柄
程序读取后一个文本文件时,便将前一个文本文件的内容从内存中移除
所以就算程序连续运行,并且处理较大的文件,也不会有特别明显的问题
2 队列
每次调用获取队列函数时都会建立一个队列的引用,该引用占用 4 字节内存。每次您调用获取队列函数之后,无论队列是否存在,另一个引用都会被建立,即占用 4 字节内存。在您获取队列的引用并将一些信息压入队列之后,您应当使用释放队列函数。调用释放队列不会丢弃您的队列,它将释放一个并且只释放一个队列的引用。队列将继续存在直到所有的引用被释放。
在您进入您的循环之前调用获取队列函数并且在循环中重复调用将保证您的队列存在至少一个引用。您可以在您的 while 循环之外使用获取队列的调用并将 queue out 引用传递到您的 while 循环之内。

当使用获取队列引用,并将15M文本文件写入队列中,不取出数据 不释放引用的情况下
如下图,这段代码运行200多次后,程序便弹出以下两个对话框.





如果在代码段后端加上取出数据(依旧不释放引用),内存占用每隔几秒钟增加8k

3.数据处理中使用数组
由于采集的数据本来就很大,在循环中又使用创建数组函数,由于该函数没有指定大小,每次加入新的数据时,要不断调整增加数组大小,但是Labview不能判断原来的数据是否还有其他用处,所以每次调整数组大小都会复制一份新数据,这样内存开销非常大。




这个 有点危险

xiexiexiexiexiexie

如何解决呢顶顶顶顶

如何解决啊。我已经遇到这个问题了,采集的TXT文件在9M左右,软件运行就像死机一样。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top