Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
GitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
Fix memory leak in `Element.removeData()` #1077
Prior to this change,
Every time the dashboard is redrawn, it spawns ~700 new Elements with data. I've submitted a pull request that appropriately cleans up this data when the user navigates away from the page using
Without this change, it is very easy for an application to slowly leak memory as Raphael continues to add new keys to `eldata`. This memory leak turns out to be a problem for [Piwik](https://piwik.org/), which uses kartographer.js (which uses raphael) to draw an SVG image of the United States in its analytics dashboard ([see demo](https://demo.piwik.org/index.php?module=CoreHome&action=index&idSite=3&period=day&date=yesterday)). Every time the dashboard is redrawn, it spawns ~700 new Elements with data. [I've submitted a pull request that appropriately cleans up this data when the user navigates away from the page using `removeData`](matomo-org/matomo#11350), but Raphael leaves an empty object in the `eldata` map keyed on the element's old ID. Since kartographer/Piwik does not reuse IDs, `eldata` will grow continually on each redraw until the application is out of memory.