Re: IDL - freeing up used memory? [message #89905 is a reply to message #89904] |
Mon, 22 December 2014 05:53   |
Helder Marchetto
Messages: 520 Registered: November 2011
|
Senior Member |
|
|
On Monday, December 22, 2014 2:05:10 PM UTC+1, ptoma...@gmail.com wrote:
> On Thursday, May 30, 2013 2:20:46 AM UTC+9, David Fanning wrote:
>> AMS writes:
>>
>>
>>> I'm running into a memory issue which I am not certain whether is related to my IDL code or the machine the code is running on itself, and am wondering whether someone might be able to help me out. To start with, I'm using IDL 7.1.1 on CentOS, invoking via command line.
>>>
>> I think your memory is getting fragmented. I would think about doing two
>> things. First, I wouldn't set your unused variables to 0, as I think
>> that promotes fragmentation. I would use the Coyote Library routine
>> UNDEFINE to get rid of them:
>>
>> http://www.idlcoyote.com/programs/undefine.pro
>>
>> But, maybe better than this, I would try (assuming they are always the
>> same size) to reuse the memory you have already set aside for reading in
>> the variables:
>>
>> FOR j=0,n DO ....
>> IF N_Elements(inputVar) EQ 0 THEN $
>> inputVar = ... ELSE $
>> inputVar = Temporary(inputVar) * 0
>> ReadU, lun, inputvar
>>
>> Cheers,
>>
>> David
>> --
>> David Fanning, Ph.D.
>> Fanning Software Consulting, Inc.
>> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>> Sepore ma de ni thue. ("Perhaps thou speakest truth.")
>
> Hi David,
>
> Hi,
>
> I have the same problem with IDL 7.0 using on fedora 20. I have 8 GB RAM.
> For example, my idl is using max memory 1.6 GB...not more than that
>
> IDL> b=bytarr(1000,1000,1600)
> IDL> help,/mem
> heap memory used: 1601945318, max: 1601945409, gets: 2884510, frees: 2883617
>
> If I give larger array, showing error
> IDL> b=bytarr(1000,1000,1700)
> % Unable to allocate memory: to make array.
> Cannot allocate memory
> % Execution halted at: $MAIN$
>
>
> I do not know why my IDL is not using the available RAM memory.
> Any help will be appriciated.
>
> Thanks
> Pankaj
Just a guess: could it be that your IDL version is 32-bit?
Try
IDL> help, !version, /struct
** Structure !VERSION, 8 tags, length=104, data length=100:
ARCH STRING 'x86_64'
OS STRING 'Win32'
OS_FAMILY STRING 'Windows'
OS_NAME STRING 'Microsoft Windows'
RELEASE STRING '8.4'
BUILD_DATE STRING 'Sep 27 2014'
MEMORY_BITS INT 64
FILE_OFFSET_BITS
INT 64
Notice that according to the help:
"MEMORY_BITS
The number of bits used to address memory. Possible values are 32 or 64. The number of bits used to address memory places a theoretical upper limit on the amount of memory available to IDL."
Cheeers
|
|
|