OK, the answer seems to be it uses some for the first one, but not thereafter. 13 bytes in fact, although I only tested one event.
I put this script in an object:
default
{
collision_start(integer num)
{
llSay(0, (string)llGetFreeMemory());
llSleep(5.0);
}
}
And shot it lots!
The output was as follows:
Object: 16134
Object: 16121
Object: 16121
I reset it and got this...
Object: 16134
Object: 16121
Object: 16121
Object: 16121
I changed the script thus:
default
{
state_entry()
{
llListen(0, "", llGetOwner(), "");
}
collision_start(integer num)
{
llSay(0, (string)llGetFreeMemory());
llSleep(5.0);
}
listen(integer chan, string name, key id, string msg)
{
llSay(0, "listened "+(string)llGetFreeMemory());
}
}
and got this:
You: unsafe
Object: listened 15901
Object: 15883
You: boo
Object: listened 15871
Object: 15883
Object: 15883
Object: 15883
You: unsafe
Object: listened 15871
Boo was during the sleep
Unsafe and safe weren't...
So, it looks to me, with the tools available, that it chews up some memory with the event queue, although it could be something else chewing up all 13 bytes, like the first function call?