A way to reduce memory cost during create diagram [message #1779440] |
Mon, 08 January 2018 03:49 |
mind calm Messages: 57 Registered: July 2017 |
Member |
|
|
Hi,
As mentioned in another topic, https://www.eclipse.org/forums/index.php/m/1775006/ , i was found memory grows in speed of O(n²) by model size. Now i have a way to fix it.
In function DiagramDialectServices.createRepresentation(),
before canonicalSynchronizer.synchronize(), we can remove the TransactionChangeRecorder from gmfDiag.eAdapters(). After canonicalSynchronizer.synchronize(), we add the TransactionChangeRecorder back.
The TransactionChangeRecorder is used for undo/redo, during create representation, each creation of a nodeImpl will trigger TransactionChangeRecorder to create a FeatureChangImpl for recording the value before create this nodeImpl, so the memory grows in O(n²).
As my test, the memory sharply reduced while the model size is huge. But i don't know whether the modification brings other potential issues.
In my opinion, the representation creation can not be undo is acceptable.
Best regards!
by Keep Mind Calm
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04535 seconds