SciChart is creating too much garbage objects/events* instead of reusing through pools (Analysis through dotMemory shows this). In complex applications this additional gc-pressure causes frequent lockups. (GC Pauses in 50-250ms+ range).
Top backtraces for GC-Problem:
– WeakEventTable.Purge
– Tick Rendering (TimeSpan, Strings)
– ProperyChangedEventManager.Purge
Top Types:
– WeakEventTable+EventKey
– HybridDictionary
– Double, String, TimeSpan
– Action
All of these top types/backtraces result directly from SciChart as we cross-verified with your 2D-Chart-Realtime-Series demo and by omitting the SciChart controls from our application. ( 2/3 of the total memory pressure comes from SciChart with even just 2 charts being present in our application, we see 5MB garbage memory traffic per 2 second, resulting in very frequent GC collections sporadically spiking into a high duration)
We currently use SciChart WPF V5, it seems SciChart WPF V6 Demo didnt fix this instead just using the LowLatency GC mode causing more frequent GC-collections causing worse overall performance in complex applications. (as we verfied in our application)
Is there plans to increase memory/object reuse/pooling and reduce events/actions? (70k allocations of events/actions for short time spans arent really understandable). What are those 70k events for simply rendering a chart with not much changing, see the attached image.
What settings/methods do you recommend to lower the Memory Pressure/WeakEvents resulting from SciChart usage?
What is the best rendering method to minimize GC pressure, we only require updates if new data becomes available through our application. Would it be manual?
Please comment
Thank you
- Hendrik Polczynski asked 4 years ago
- last edited 4 years ago
- You must login to post comments
Hi Hendrik,
Thanks for your inquiry.
Could you please tell which SciChart version do you currently use and send us a small sample project reproducing this issue for investigation?
Thanks in advance.
With best regards,
Oleksandr
- Oleksandr Shvets answered 4 years ago
- Hi Oleksandr, i can reproduce this in the SciChart WPF v5 Examples and in the SciChart WPF V6 Examples (downloaded last week) in the Example 2D Charts -> ” Realtime Series Values” and “FIFO Scrolling charts” ( a bit different, but still same issue). The screenshot i attached was recorded using JetBrains dotMemory and those 2 Demos/Examples, (i compared the two example versions behaviour by checking the memory traffic between two snapshots whith activated allocation collection. We see the same problem in our application with SciChart being present too, but you can reproduce it with the original Examples as i mentioned. (our use case is FIFO Scrolling charts combined with a backing data series on another axis and the range moving forward on the timeline). Thanks
- Hendrik, is my colleague this is our project (The V5 license we got, is linked to this account). Potentially, if this behaviour is fixed we’d renew a license to get that fix. We use Version v5.2.0.11618_Release in our project.
- You must login to post comments
Please login first to submit.