Reduce memory overhead of g_object_weak_ref()
Every GjsMaybeOwned
creates a weak ref on the GjsContext
so it can be properly tear down on context finalization. This seems however fairly expensive...
According to heaptrack, and in stress situations (i.e. many objects being created), g_object_weak_ref() is the busiest place in terms of total memory allocated from a single point, and even may potentially grow to be the single biggest memory allocation made by gnome-shell.
It seems we can ease that quite a bit. I made a couple of patches that keep a single weak ref for all ObjectInstances (relying on #142 (closed)). The other source of GjsMaybeOwned is in closure.cpp, but those are very transient and rarely add up to a significant number.
With these patches, this function virtually disappears from those stats.