LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

memory full

I have 3.5GB RAM.  I am running a very complex VI.  After some time it says memory full.  I check the task manager and I still have 2.2GB RAM free.  Also Page File usage is not even 50%.  So what might be causing problems.  When LV says memory full, what memory is it referring to? 
Message 1 of 13
(4,177 Views)
What is your OS?
 


Message Edited by Support on 08-08-2008 11:28 AM
Message 2 of 13
(4,175 Views)
I think it would be helpful for you to read this KnowlegeBase article:
 
The "Memory is Full" error typically occurs when LabVIEW can not allocate a contiguous chunk of memory. Even though you have a large amount of RAM in your PC, finding a large contiguous chunk that is available for data can be difficult (especially if your current RAM usage is very fragmented). See the following article on Managing Large Data Sets in LabVIEW: http://zone.ni.com/devzone/cda/tut/p/id/3625
 
I hope this helps, please let me know if you need any additional information and I would be glad to help.
 
Casey Weltzin
Applications Engineer
National Instruments

Message Edited by Caseyw on 05-15-2007 10:00 AM



Message Edited by Support on 08-08-2008 11:27 AM
Message 3 of 13
(4,147 Views)
My OS is Win XP.
Message 4 of 13
(4,125 Views)
Did the above quoted links help at all?
 
Can you also provide some details on what your application does. Does it really need that much memory? Often, the memory footprint can be reduced dramatically by coding with memory in mind. How big is the actual data you are operating on?
 
For example, you should avoid resize operations on large arrays (e.g. built array, insert into array, delete from array). Try to avoid extra data copies in memory by coding in such a way that memory buffers can be re-used. Do operations "in place" whenever possible. Also local variables cause memory copies (use shift registers instead to hold your data). Don't use indicators for large intermediary results, they again have their own data copy (Some people use those for the sole purpose of creating local variables, a big drain on memory!).
0 Kudos
Message 5 of 13
(4,114 Views)
I have two 12,500,000 arrays (I16).  I have to process then and make a single 12,500,000 array(DLB).  I break the array into chunks of 10000 and work on the small portion.  the problem is when I am trying to join all 1250 portions in the end.
Message 6 of 13
(4,101 Views)

What kind of processing is needed to join them? Could you give an example?

Would maybe SGL or I32 be sufficient for the output?

What do you need to do with the final array? Could you just append the processed segments to a binary file instead of keeping everything in memory?

Are you possibly trying to display the final data in a graph? In this case you should reduce the data because it does not make sense trying to display 12M of data on 1000 pixels of horizontal display space. 😉

0 Kudos
Message 7 of 13
(4,099 Views)
say the 2 arrays are x[.....] and y[.....].
 
i make the third array such that z[n] = x[n] + iy[n].  z[....] will be a complex array.
 
then I try to make a IQ cluster of this array.  then i demodulate the IQ signal and make a waveform.  problem comes in append waveforms sub vi.
 
I have a version that just writes stuff onto the hard disk.  that works without problems.  I am trying to make everything work in RAM.
Message 8 of 13
(4,088 Views)
OK, so if you end up with CDB (DBL-complex) array with 16bytes/element, a single copy of the array data already consumes 200MB!
 
I don't understand IQ cluster and waveform comments. Are you working with the plain complex arrays of are you using more complex (sic) data types such as clusters and waveforms?
 
My RF is a bit rusty, but can't you decimate the array after demodulation?
0 Kudos
Message 9 of 13
(4,082 Views)

I know that i cant handle the whole array at one time.  so i take 2x10000 I16 points at 1 time and make 10000 CDB points array.  with the CDB complex array, using bundle sub vi, i make the IQ signal.  which i demodulate to waveform.  this waveform is 2ms long.

finally i have 1250 waveforms, 2ms each.  these i want to merge.  I use merge waveform sub vi.  here is where i run out of memory after 1218 iteration (ie, making waveform 2.4 sec )

I know its stretching labview to the limit.  but is there a way i can do it all in RAM.

Message 10 of 13
(4,057 Views)