Something that happened a while ago but I failed to notice was that Chris Leary added a regexp cache which, among other things, is flushed on every GC. This fixed an existing problem where cold regexps were not being discarded, which was a MemShrink:P1 bug because 10s or even 100s of MBs of compiled regexp code could accumulate in some circumstances. Nice work, Chris!
I landed some memory reporter infrastructure changes. These will make it much easier to integrate DMD with Firefox, which will help drive about:memory’s “heap-unclassified” number down. They also do some sanity checking of memory reporters, and this checking has already found some bugs in existing reporters.
Terrence Cole made the JS engine to a “shrink” GC on memory pressure events, such as when about:memory’s “minimize memory usage” button is pressed. A “shrink” GC is one that causes unused pages to be decommitted.
I wrote two pieces of documentation.
- The first is a guide to zombie compartments, including instructions on how to test if an add-on causes them. This guide is similar in spirit to an old blog post of mine, but explains things more carefully. There is a QA test day planned for Friday, December 16, and hopefully some extensive add-on leak testing will happen on that day.
- The second is a guide to implementing memory reporters. Please read it if you ever have to implement one.
In publicity news, ZDNet published a story about how Google’s +1 buttons consume a lot of memory, particular in the newly redesigned Google Reader. The author used Firefox’s about:memory page to determine this, which enabled him to point the finger at Google’s JS code instead of Firefox. (Dietrich Ayala wrote about this topic previously, and wrote the Wallflower add-on in response; the Antisocial subscription for AdBlock Plus apparently has the same effect.)
Here’s the current bug count.
- P1: 27 (-5/+1)
- P2: 139 (-4/+11)
- P3: 61 (-0/+1)
- Unprioritized: 0 (-4/+0)
The P1s went down because in today’s MemShrink meeting we reprioritized several that are now less important than they were.