29759721cb
exifr keeps a page-long cache of the options object it is handed, keyed by that object itself, so a fresh literal per frame pinned a frame's worth of tag sets (about thirty Sets) for as long as the tab lived: 3601 frames left ~16MB of heap behind, 9601 left ~50MB, and a roll of a hundred thousand frames is what a tab cannot hold. One options object per call site now, which is what that cache is for. Measured on the deployed bundle: 3601 frames rest at 8MB, not 23MB. scripts/ram-check.mjs reads a roll of many folders, queues folders behind the reading in front of them and reports the heap left after a forced collection, which is how those numbers were taken.