Re: Q: Efficient Memory handling and deallocation [message #4109 is a reply to message #4107] |
Thu, 04 May 1995 00:00   |
Paul Probert
Messages: 7 Registered: May 1995
|
Junior Member |
|
|
rutledge@hoshi.mit.edu (Bob Rutledge) wrote:
>
>
> I handle quite a bit of data, and I have been using the "save" and
> "restore" routines to manage them. It seems that IDL takes quite
> a bit of time to deallocate a variable when a new one is read in over it
> (I create a huge data structure, and "save" it, to be "restored" later).
> Further, it seems that after I have dealt with the data in the variable,
> and I would like to deallocate it (by setting the variable=0), the
memory
> does not get freed up.
>
> Suggestions?
>
> Bob
We've had that problem, and if your program iterates through the "create,
do something, delete" cycle a few times you run out of memory, because
the "do something" step inevitably allocates a few more bytes, and these
come from the hole left by the previous delete. So on the next create
you don't have a large enough contiguous block of memory. We brought
this up with the support people at IDL, and they said it was the
operating system's fault. But we figured out, as you did, that IDL
doesn't deallocate the memory. One workaround is, at the beginning of
your program, create and then immediately delete an array 2 or 3 times
the size of your needs, and this will leave a hole big enough for many
future reallocations.
Another technique is to give up modular programming and do everything in
one big main program and never deallocate. But I would really like the
people at RSI to read these complaints and fix IDL.
Paul Probert, University of Wisconsin probert@uwmfe.neep.wisc.edu
|
|
|