B2G Fixes

Kyle Huey made image.src='' discard the image immediately even if the image is not in the document. This provides a way for image memory to be discarded immediately, which is important for some B2G apps such as the Gallery app. This was a MemShrink:P1 bug.

Justin Lebar fixed a bad leak in AudioChannelAgent.

Mike Habicher fixed an image-related leak that was manifesting on B2G.

Other Fixes

I exposed the existing JSON memory report dumping functionality in about:memory. As a result, gzipped JSON is now the preferred format for attaching memory report data to bugs. This was a MemShrink:P1 bug.

Honza Bambas overhauled the DOM storage code. Apparently this might reduce memory consumption, but I fully admit to not knowing the details.

Nicolas Silva fixed a leak in layers code relating to OMTC.

I removed the MEMORY_EXPLICIT telemetry measurement. I didn’t want to do this, but it’s been causing hangs for some users, and those hangs are hard to avoid due to the complexity of reporting memory consumption from web workers. Furthermore, in practice the measurement was sufficiently noisy that we’ve never gotten anything useful from it.

Help Needed

Mozilla code uses a mixture of fallible and infallible allocations. In theory, any allocation that could allocate a large amount of memory (e.g. a few hundred KiB or more) should use a fallible allocator. We’ve seen recently some cases where large allocations were being made infallibly, which led to OOM crashes. Bug 862592 proposes adding an assertion to the infallible allocators that the request size isn’t too large. This is an easy bug to get started with, if anyone is interested. Details are in the bug.

Bug Counts

Here are the current bug counts.

P1: 15 (-4/+4)

P2: 145 (-0/+7)

P3: 131 (-2/+4)

Unprioritized: 5 (-1/+5)

Interregnum

I will be on vacation during May. As a result, there will be no MemShrink reports for the next three fortnights. (Although I’ll be away for just over four weeks, that period covers three MemShrink meetings.) I’ll be back with the next report on June 11. See you then!