As an example, I put the one-liner:
llOwnerSay("status: " + (string)llGetMemoryLimit() + " limit, " + (string)llGetUsedMemory() + " used, " + (string)llGetFreeMemory() + " free");
in one of my programs; the result was:
status: 16384 limit, 25357 used, 16000 free
Under Mono, limit = bytes used + bytes free + bytes wasted due to memory fragmentation. But it seems that the limit is reporting as 16 kb no matter how much memory is allocated with llSetMemoryLimit()... and that the free value is entirely a dummy. I have some scripts that actually rely on the accuracy of this information to dictate user-facing behavior—mainly in chunking data—so actually wiring these up is meaningful, though as a stop-gap (since there's now
so
much free memory to go around!) I can (and will) add other buffer size constraints to keep it flowing smoothly.