>From my tests V8 disposes memory only when I'm calling isolate->Dispose()
Is it ever possible to dispose memory on per context basis?

On Sat, Jan 9, 2016 at 4:34 PM, Sergey F. <[email protected]> wrote:

> Also one note, I do not wish to dispose the whole isolate
> I would like to dispose the context only
> My usage pattern:
> - create fixed pool of isolates(= cores count)
> - allocate/dispose contexts to execute user-defined code
>
> On Sat, Jan 9, 2016 at 4:15 PM, Sergey F. <[email protected]> wrote:
>
>> Thanks very much for the answer, Ben!
>>
>> Hm... looks like there is some other problem with my v8 usage, I just
>> made a quick check:
>> - made huge allocation of memory within the context(around 1 gb)
>> - do some work
>> - call .Reset() on all persistent handles and manually remove c++
>> allocated memory
>> - memory allocated by context aren't being freed by V8
>>
>> I just somehow thought it would be totally reasonable to expect v8 to
>> call my SetWeak callbacks when the context(and all dedicated objects within
>> their c++ counterparts) are being disposed
>> As far as I know V8 must dispose all context-allocated memory when I'm
>> calling Reset on context persistent handle(no other references to it)
>> Looks like I'm missing something fundamental
>>
>> What is the proper way to dispose V8 context and free all js-allocated
>> resources that belong to this particular context?
>>
>> Thanks again!
>>
>> On Sat, Jan 9, 2016 at 3:47 PM, Ben Noordhuis <[email protected]> wrote:
>>
>>> On Fri, Jan 8, 2016 at 7:59 PM, Sergey F. <[email protected]> wrote:
>>> > I have v8 integration which allocates some objects on c++ side, wraps
>>> them
>>> > and makes available to js code
>>> > Everything works perfect, when object becomes unreachable v8 GC calls
>>> > SetWeak callback and I'm able to free c++ allocated memory
>>> >
>>> > But when I do context disposal(via calling persistent handle .Reset()
>>> > method) why the remaining SetWeak callbacks aren't being triggered by
>>> v8?
>>> > Should I do this cleanup manually?
>>> >
>>> > Thanks!
>>>
>>> Weak callbacks are not guaranteed to run, so yes, you need to clean up
>>> manually.
>>>
>>> If your persistent handles have a class id, you can iterate over them
>>> with v8::Isolate::VisitHandlesWithClassIds() before disposing the
>>> isolate.
>>>
>>> For per-context cleanup, you'll have to devise something else.  You
>>> could assign per-context class ids and filter on them but that may not
>>> be very efficient when there are many contexts.
>>>
>>> --
>>> --
>>> v8-users mailing list
>>> [email protected]
>>> 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/z3bVyJRyCf4/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

-- 
-- 
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