Corey,

immediately I see nothing suspicious.  I think you need to provide the
full (but ideally short) example of the problem.  The most appreciate
form would be to modify test/test-api.cc to include the test which
demonstrates the problem.

yours,
anton.

On Mon, Mar 7, 2011 at 4:12 AM, Corey <[email protected]> wrote:
> Hello, I'm working on a game engine that uses V8 JavaScript for scripting,
> and I'm exposing a Sprite class to the JavaScript API, and I've run into a
> problem: it isn't being garbage collected.
> Here's how I'm wrapping the class:
> v8::Persistent<v8::ObjectTemplate> _template;
>
> // ...
> v8::Handle<v8::ObjectTemplate> CreateTemplate() { v8::HandleScope
> handle_scope; v8::Handle<v8::FunctionTemplate> templ =
> v8::FunctionTemplate::New(); // ... set some methods ...
> v8::Handle<v8::ObjectTemplate> t = templ->InstanceTemplate();
> t->SetInternalFieldCount(1); return handle_scope.Close(t); } FUNC_TYPE
> Wrap(FUNC_ARGS) { v8::HandleScope handle_scope; if (args.IsConstructCall())
> { v8::String::Utf8Value filename(args[0]); Video::Sprite* s = new
> Video::Sprite(Scripting::ToCString(filename)); // Create the class template
> if it doesn't exist yet if (_template.IsEmpty()) { _template =
> v8::Persistent<v8::ObjectTemplate>::New(CreateTemplate()); }
> v8::Persistent<v8::Object> result =
> v8::Persistent<v8::Object>::New(_template->NewInstance());
> result.MakeWeak(s, WeakRefCallback); result->SetInternalField(0,
> v8::External::New(s)); return handle_scope.Close(result); } return
> v8::Undefined(); } void WeakRefCallback(v8::Persistent<v8::Value> object,
> void* parameter) { Video::Sprite* s =
> static_cast<Video::Sprite*>(parameter); delete s; object.Dispose(); }
>
> I'm testing the garbage collection by continually creating and deleting
> sprites in the JavaScript. However the WeakRefCallback is never called, and
> the memory usage continues to rise and rise. I've checked to make sure that
> the GC is running (with v8::V8::AddGCEpilogueCallback) and it is, quite
> frequently, however this is not disposing of the deleted JavaScript sprites.
> Anyone have any ideas as to why?
>
> --
> 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

Reply via email to