Why "Objects are only deleted on idle"?

Richard Gaskin ambassador at fourthworld.com
Wed Sep 23 13:27:34 EDT 2015


Mark Waddingham wrote:
 > On 2015-09-23 18:44, Richard Gaskin wrote:
 >> I'm having a hard time conceiving of a circumstance in which it's
 >> necessary o build a large number of objects only to delete them again
 >> in the same handler.
 >>
 >> What am I missing?
 >
 > Any loop of the form:
 >
 > repeat ...
 >     create stack / object
 >     do something with created object / stack
 >     delete stack / object
 > end repeat
 >
 > Would previously cause memory to increase as the engine would only
 > free the memory used by the objects when it returned to the root
 > event loop. Now it knows it can free the memory at the point of the
 > delete if the object was created at the same level, or in a call
 > made within the loop.
 >
 > Now, obviously this kind of thing could always be refactored to use
 > 'send in time' - however that means you have to refactor all handlers
 > which call such a handler to also work in that fashion (not
 > necessarily a trivial transformation).
 >
 > It has been a long standing problem which exists because of the way
 > the engine currently handles objects internally (more specifically
 > how it has a tendency to retain direct pointers to objects on the C
 > stack). We finally worked out a reasonable solution to the problem
 > which didn't involve reworking a substantial amount of code :)

Thanks, Mark.

The "how" was pretty clear from the Release Notes.  I just couldn't 
figure out the "why".  How often to people create objects they don't want?

For ID preservation I tend to do what the DG does, hiding rather than 
disposing of controls I'm likely to need again.

-- 
  Richard Gaskin
  Fourth World Systems
  Software Design and Development for the Desktop, Mobile, and the Web
  ____________________________________________________________________
  Ambassador at FourthWorld.com                http://www.FourthWorld.com





More information about the use-livecode mailing list