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