In recently, I am coding a script 
wrapper<https://github.com/code4game/scriptwrapper>by Google V8. You can 
reference the 
sample<https://github.com/code4game/scriptwrapper/blob/master/code/src/jsv8wrapper/tutorial/tut03_cls.cpp>(tut03_cls).
 
I use the WeakCallback to free the memory that was allocated by c++.

Three Important Things:

   1. Call `data.GetValue().Clear();` in the WeakCallback.
   2. Set the object to `null` in javascript file.
   3. Call `while(!v8::V8::IdleNotification()) {};` after run script.

Hope these can help you.


在 2013年10月24日星期四UTC+8下午10时36分52秒,Yorath Wang写道:
>
> Thanks a lot. But are there any ways to avoid the memory leak?
>
>
> On Thu, Oct 24, 2013 at 5:46 PM, Andreas Rossberg 
> <[email protected]<javascript:>
> > wrote:
>
>> On 24 October 2013 11:20, Sven Panne <[email protected] <javascript:>> 
>> wrote:
>> > On Thu, Oct 24, 2013 at 11:00 AM, Yorath Wang 
>> > <[email protected]<javascript:>> 
>> wrote:
>> >>
>> >> Thanks for your reply.
>> >> I use while (!v8::V8::IdleNotification()) {} force gc to release the
>> >> memory, but that callback is not called either.
>> >> Could you please show me a right way to use SetWeak to avoid memroy 
>> leak?
>> >> Thanks
>> >
>> > To shorten this discussion a bit: Using weak callbacks (a.k.a. 
>> finalizers)
>> > will never give you any guarantees if/when they are called, it is just 
>> based
>> > on best-effort. If you really need timely destruction, you will need 
>> some
>> > form of explicit API for the kind of objects you are working with.
>>
>> Right, and just to be clear: that is true for just about any
>> finalisation mechanism. Since this is such a frequent question, let me
>> reiterate two fundamental wisdoms regarding GC:
>>
>> 1. Forcing GC explicitly almost always trades bad behaviour for worse 
>> behaviour.
>> 2. Finalisation almost always is the wrong solution to the wrong problem.
>>
>> And once you start violating the former just to work around the
>> consequences of violating the latter, you are definitely in the
>> non-exceptional case of either. ;)
>>
>> /Andreas
>>
>> --
>> --
>> v8-users mailing list
>> [email protected] <javascript:>
>> http://groups.google.com/group/v8-users
>> ---
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "v8-users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/v8-users/FdfYWPWgX9k/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to