On 2018-08-13 20:01, Stephen MacLean via use-livecode wrote:
Hi Mark,
Yes, doing quite a bit, which LC handles just fine:) Except for these
with big queries;) I do want to mention that I call plenty of
functions, so it’s not a real tight loop, just a loop with a lot going
on.
Ok, will do the next time I run one of these… These big batches take
about 5 hours to run.
From what you said in your other message this could well be a
memory-leak...
However, the other potential cause is what's called
'heap-fragmentation'. Whilst memory is being freed correctly, sometimes
certain use patterns can cause the C heap to consist of 'mostly free
space', but having no contiguous block large enough to allocate some of
the blocks of memory you are using - so the heap gets extended. When you
do free a 'big block' it gets used up by lots of small blocks.
Basically, the heap becomes like a block of swiss-cheese - you can fit
small things in the holes, but nothing big.
The 'heap' report will help determine what's going on there (you don't
need to run it until you get to the exhaustion point - just for a while
until you see the gradually continual rise).
By looking at the report it is possible to tell the actual % of memory
in use in the heap overall.
Is there any way to split up the processing of a single batch into
pieces, each run in its own process (sequentially?) - that approach
actually gives you two things - (1) a fix to the exhaustion problem you
are having and (2) the ability to recover most of the batch if one piece
fails.
Warmest Regards,
Mark.
--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode