Memory consumption optimization and leak fixing /A
|Assignee:||Antti Villberg||% Done:|
|Velocity based estimate||-|
|Release||Simantics 1.6||Release relationship||Auto|
Spend less memory on SyncListenerLists lists by default. They constitute a major part of the memory footprint of Element instances.
Fixed lots of diagram resource (Element/Diagram instances mainly) leaks in g2d and diagram code.
Also fixed diagram profile observation leaks causing data and listeners to get trapped for every diagram ever opened.
Use weak caching for all SVG documents loaded into SVGNode through setData(String).
This may not be necessary when DB caching works properly, but helps to keep down the amount of
duplicate Strings with the exact same content.
- Decreased default sizes of RouteGraph and RouteLine collections.
- made default sizes of some structures smaller *
#1 Updated by Tuukka Lehtonen about 6 years ago
- Status changed from New to In Progress
- Added caching of the following data to the generic RouteGraphConnectionClassFactory (not the sysdyn/etc. customized versions yet):
- StyledRouteGraphRenderer - only one created per (ConnectionStyle, scene graph)
- ConnectionStyle - only one created per (connection type, scene graph)
- ILineEndStyle - only one created per used DIA.HasConnector attachment relation
The first two optimizations can be used in KCLEco and Sysdyn too, but the last one cannot be easily reused because of the contents their custom ILineEndStyle implementations. They contain the terminal element bounds which makes pretty much every ILineEndStyle different. Also, those implementations don't even have equals/hashCode implementations.