src: use unrefed async for GC tracking
Do not let an internal handle keep the event loop alive. PR-URL: https://github.com/nodejs/node/pull/16758 Fixes: https://github.com/node/issues/16210 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
This commit is contained in:
parent
ff21851816
commit
941c65bba2
@ -215,6 +215,7 @@ void MarkGarbageCollectionEnd(Isolate* isolate,
|
|||||||
uv_async_t* async = new uv_async_t(); // coverity[leaked_storage]
|
uv_async_t* async = new uv_async_t(); // coverity[leaked_storage]
|
||||||
if (uv_async_init(env->event_loop(), async, PerformanceGCCallback))
|
if (uv_async_init(env->event_loop(), async, PerformanceGCCallback))
|
||||||
return delete async;
|
return delete async;
|
||||||
|
uv_unref(reinterpret_cast<uv_handle_t*>(async));
|
||||||
async->data =
|
async->data =
|
||||||
new PerformanceEntry::Data(env, "gc", "gc",
|
new PerformanceEntry::Data(env, "gc", "gc",
|
||||||
performance_last_gc_start_mark_,
|
performance_last_gc_start_mark_,
|
||||||
|
@ -48,4 +48,6 @@ const kinds = [
|
|||||||
}));
|
}));
|
||||||
obs.observe({ entryTypes: ['gc'] });
|
obs.observe({ entryTypes: ['gc'] });
|
||||||
global.gc();
|
global.gc();
|
||||||
|
// Keep the event loop alive to witness the GC async callback happen.
|
||||||
|
setImmediate(() => setImmediate(() => 0));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user