global: Initiate *full* GC at idle
While I've been trying to make the GC kick in more often, I've decided it's a better tradeoff to aggressively GC at "leisure", for multiple reasons. We can and should revisit this at a later time, but basically: * The shell doesn't generate *that* much JS data - garbage collection is very fast here. * Long periods without GC mean we're not calling free() when we could, which in turn makes heap fragmentation much worse. * Ensuring the GC runs at idle makes it much less likely we'll take a random large GC hit in the middle of an animation. https://bugzilla.gnome.org/show_bug.cgi?id=659254
This commit is contained in:
parent
36bfe8c533
commit
f54b82f64c
@ -1429,11 +1429,12 @@ run_leisure_functions (gpointer data)
|
||||
if (global->work_count > 0)
|
||||
return FALSE;
|
||||
|
||||
/*
|
||||
* We do call MAYBE_GC() here to free up some memory and
|
||||
* prevent the GC from running when we are busy doing other things.
|
||||
/* Previously we called gjs_maybe_gc(). However, it simply doesn't
|
||||
* trigger often enough. Garbage collection is very fast here, so
|
||||
* let's just aggressively GC. This will help avoid both heap
|
||||
* fragmentation, and the GC kicking in when we don't want it to.
|
||||
*/
|
||||
shell_global_maybe_gc (global);
|
||||
gjs_context_gc (global->js_context);
|
||||
|
||||
/* No leisure closures, so we are done */
|
||||
if (global->leisure_closures == NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user