Anton, what do you mean by "API functions.."? Which part of his above example are you referring to? I admit I'm still not sure what's wrong with what Rasmus is doing.
Thanks :Marco On Oct 22, 10:52 am, Anton Muhin <[email protected]> wrote: > Rasmus, > > API functions are cached and are never collected, hence the object > managed by handle is never collected hence weak callback is never > invoked. > > hth and yours, > anton. > > > > On Fri, Oct 22, 2010 at 6:31 PM, Rasmus Andersson <[email protected]> wrote: > > On Fri, Oct 22, 2010 at 16:24, Stephan Beal <[email protected]> wrote: > >> On Fri, Oct 22, 2010 at 4:15 PM, Rasmus Andersson <[email protected]> wrote: > > >>> void *data = NULL; // points to something in reality > >>> phandle.MakeWeak(data, &WeakCallback); > > >> It would really surprise me if MakeWeak() does anything useful when passed > >> a > >> NULL pointer. If you just need a pointer to test with, the approach i like > >> is: > >> static int x = 42; > >> void * data = &x; > > > I am passing a pointer to some heap allocated memory in my actual > > implementation. I just removed that part in the mail. Sorry for the > > confusion. > > >>> The "Handler" gets called as expected, but "WeakCallback" is never > >>> called. > > >>> Any ideas? > > >> AFAIK, v8 never guarantees that the WeakCallback will _ever_ be called. > >> Even > >> when v8 shuts down, it might just quit without calling the destructors. It > >> was explained once on this mailing list (a year or more ago) that that is > >> for performance reasons in the Chrome browser, to avoid a long cleanup > >> phase > >> when the app is exiting and will be cleaned up by the OS. (i don't agree > >> that the behaviour is correct, because it fails to recognize that > >> destructors must be called for proper cleanup, but it's not my code.) > > > I've created a test program which calls createAndCallAFunction() 1000 > > times per event loop, thus reaching ~1GB residential memory within a > > few seconds. I guess at least one of the millions of objects created > > should be GC:ed? > > > After hitting approx. 1GB res, memory usage stabilizes, so I guess v8 > > DO reuse memory (so no refcounter leak I guess). > > > Most examples (including Ryan Dahls/Node.js ObjectWrapper) operate on > > Object and ObjectTemplate, but in my case it's a Function (which is a > > subclass of Object, but have a separate Template class). > > >> -- > >> ----- stephan beal > >>http://wanderinghorse.net/home/stephan/ > > >> -- > >> v8-users mailing list > >> [email protected] > >>http://groups.google.com/group/v8-users > > > -- > > Rasmus Andersson > > > -- > > v8-users mailing list > > [email protected] > >http://groups.google.com/group/v8-users -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
