Properly cleanup thread-local arenas
Categories
(Core :: Memory Allocator, enhancement, P3)
Tracking
()
People
(Reporter: glandium, Assigned: pbone)
References
(Depends on 1 open bug, Blocks 2 open bugs)
Details
Attachments
(1 file)
Reporter | ||
Updated•6 years ago
|
Comment 1•6 years ago
|
||
Can someone educate me the status of this bug?
I used moz_create_arena
in bug 1377999, and I'd like know whether this is a blocker of my patch.
If I can't manually call moz_dispose_arena
at the moment, will it be disposed sometime later?
Thanks
Comment 2•6 years ago
|
||
(In reply to Sean Feng [:sefeng] from comment #1)
Can someone educate me the status of this bug?
We think bug 1596300 will help out here, it's currently be worked on but is more of proof-of-concept right now.
I used
moz_create_arena
in bug 1377999, and I'd like know whether this is a blocker of my patch.
It really depends on how many you expect to create and whether or not you can reuse them. Mike probably has a better idea of the overhead of leaving them around.
If I can't manually call
moz_dispose_arena
at the moment, will it be disposed sometime later?
My understanding is they'll stick around until process shutdown. If these are limited to content processes this might not be a huge issue once fission is enabled.
Reporter | ||
Comment 3•6 years ago
|
||
What Eric said is accurate. At the moment, using moz_create_arena is not recommended except if the arena is meant to last until the end of the process. So for example, creating an arena for all DOM nodes in a process is fine, but creating an arena for all DOM nodes per page is not (with multiple pages per process).
Updated•3 years ago
|
Comment 4•8 months ago
|
||
Note that currently we rely in quite some places on the arena not going away after having done gArenas.GetById
outside the the collection's lock. We might be able to ensure that this pattern is used only on the main thread and add some API that allows us to run the effective dispose only ever on the main thread, too. Or in alternative we might want some additional mutex and/or reference counting for arenas.
Assignee | ||
Comment 5•5 months ago
|
||
Bug 1950041 prevented the deletion of all arenas, but this bug still blocks public (thread-local) arena deletion. One potential solution would be either to merge arenas into an orphaned threads arena when a thread terminates, or to delete the arena once its last object is freed.
Assignee | ||
Comment 6•4 months ago
|
||
Thread local arenas can now be destroyed, non-empty thread-local arenas will
be destroyed after their last object is freed, even if that's later from a
different thread. Thread local arenas will be destroyed implicitly when a
thread exits.
Assignee | ||
Updated•4 months ago
|
Description
•