SVGImage needs to implement the virtual function SVGImage::destroyDecodedData() which should destroy the DOM and the render trees. It should also be able to create them on demand. Currently it creates them only when all data is received in SVGImage::dataChanged().
The DOM and render trees are purgeable data. They can be rebuilt from the SVGImage encoded data. They take too much memory compared to the encoded data especially when the SVG contains paths or polygons. This implementation should save a lot of memory and allow more SVGImages to be cached.