I've got code to create a JS object that wraps a C++ object.
I'm using a weak pointer from the C++ object to the JS object to detect when 
the JS object is collected so that I can delete the C++ object.

I can't yet demonstrate that the C++ object is deleted. I wrote a simple loop 
in JS

function f()
{
    for (i = 0; i < 1000; ++i)
    {
        new jfx.ByteBuffer();
    }
}

and run v8 with the flags
    --log_handles --gc_interval=10 --trace_gc --gc_global

I get debugging messages 

constructed byte buffer 0x8a1e0e8, isWeak = 1
0x8a1e0e8: isWeak=1, isNearDeath=0
Mark-sweep 0.4 -> 0.4 MB, 20 ms.
constructed byte buffer 0x8a440f8, isWeak = 1
0x8a1e0e8: isWeak=1, isNearDeath=0

The weak pointers are never marked as NearDeath.

>From v8.log I get 

GlobalHandle::MakeWeak,0x8a538b4
GlobalHandle::MakeWeak,0x8a538b4
markcompact,begin,2,797574,1224457984667
markcompact,end,2,809572,1224457984679
scavenge,begin,2,809572,1224457984679
scavenge,end,2,810572,1224457984679
GlobalHandle::MakeWeak,0x8a538b4

so you'd think that if the JS objects were no longer referenced then I would 
see them deleted.

So what do I have to do to generate garbage in scripts if the above for-loop 
doesn't do it.

-- 
Anthony Shipman                    Mamas don't let your babies 
[EMAIL PROTECTED]                   grow up to be outsourced.

--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to