微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 程序运行占用大量内存求助

程序运行占用大量内存求助

时间:10-02 整理:3721RD 点击:
程序刚打开的时候内存是170M左右,在采集过程中变化不大(1M或2M左右),采集完后从硬盘上把数据调出来处理,处理过程中有好几个波形图表要显示波形(显示的数据总和比一共采集到的多),内存一下就涨到230M左右,后面还有好几个数据处理步骤,运行完后内存达到320M,循环到第一步会清空历史数据,把所有显示控件全部清空,内存只会减少10M至20M,又继续连续运行多次,内存变化又不大了(只有打开程序第一次运行的时候内存变化特别大)
请问各位高手出现这种现象是什么原因,会不会运行八个小时不到就把内存占满了。
我用的是USB9234的采集卡,采集加速度,采样率是22000,采集14s,两个通道同时采集,采集边用tdms文件存到硬盘上,

我也有和小编同样地问题,我同时采集的是4个数据,要画四个波形图,采用动态事件报警。我的占CPU更加离谱,整个程序才200KB左右,跑起来电脑的非常费力。请各位高手出招啊 ,有没有好点的解决办法

如果你的程序没有内存泄漏,就不会长时间运行占内存太大。  内存泄漏与程序刚运行占内存大小无关。  理论上来说,内存大没有关系,只要不泄漏而且系统内存足够大。  如果有内存泄漏,原先占内存再小都有可能在长时间运行后崩溃。  也就是说,你的问题关键在于找出内存有没有泄露,至于你描述的现象(执行某个操作会增加内存),一般来说不是泄漏的来源,它只会在第一次运行时造成内存增加,后面的重复运行是不会再增加的。
内存泄露往往是使用了build array 或者concatenate string, 使得某个数组或字符串随着运行越来越大造成的。 当然还有可能是你调用的DLL甚至LabVIEW本身的函数产生的泄漏。 可以通过搜索build array 或者concatenate string排除一下自己程序的问题。
另外就是自己程序逻辑的问题了,很多情况下是不需要把所有数据都读进来的,可以分段处理,分段处理所需内存就会小很多。

建议看看这个  通过提高labvIEW程序性能优化内存避免内存不足http://bbs.elecfans.com/jishu_209445_1_1.html

同样的问题啊

不知道怎么查是否有内存泄露问题

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

网站地图

Top