You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Passivated actors and grains are released from the passivation heap (#1317). The passivation heap shrank its queue slice without clearing the popped slot, so the backing array kept a strong reference to every passivated participant. Each retained entry pinned its PID together with the actor or grain instance, mailbox, and state for the lifetime of the actor system. Popped slots are now cleared, and passivating 50,000 grains drops retained heap from about 78 MB to about 3 MB. The stream heaps that reorder parallel map results and merge sequence elements had the same defect and now clear popped slots as well.
⚡ Performance
Lower per-actor heap footprint and GC mark cost at large resident populations (#1315, #1316). Spawned actors no longer eagerly allocate bookkeeping maps that usually stay empty, SpawnChild no longer allocates a default supervisor and passivation strategy per child, the spawn path no longer allocates a logger that is immediately replaced, and metrics-enabled systems register a constant two meter callbacks instead of one per actor plus one. An idle child actor retains 19.7% fewer bytes and 24% fewer objects, flat spawns retain 4.7% fewer bytes, and spawn/stop churn triggers 9.8% fewer GC cycles.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
🔧 Fixes
50,000grains drops retained heap from about78 MBto about3 MB. The stream heaps that reorder parallel map results and merge sequence elements had the same defect and now clear popped slots as well.⚡ Performance
SpawnChildno longer allocates a default supervisor and passivation strategy per child, the spawn path no longer allocates a logger that is immediately replaced, and metrics-enabled systems register a constant two meter callbacks instead of one per actor plus one. An idle child actor retains19.7%fewer bytes and24%fewer objects, flat spawns retain4.7%fewer bytes, and spawn/stop churn triggers9.8%fewer GC cycles.🔀 Pull Requests
Full Changelog: v4.5.1...v4.5.2
This discussion was created from the release v4.5.2.
All reactions