I also creates SO question regarding v8 behavior with some code attached,
please see:
http://stackoverflow.com/questions/34694591/v8-impossible-to-free-memory-allocated-by-context

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

> 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