It seems there is a memory leak in the event processing somewhere in SWTChart, maybe a listener seems to hold reference to the compressor, so it creates over and over again data items that then fill up the whole heap.
Currently I see over 400 instance of the CompressScatterSeries taking up 1.5GB ob space for only the boolean arrays
java.lang.OutOfMemoryError: Java heap space
at org.eclipse.swtchart.internal.compress.CompressScatterSeries.addNecessaryPlots(CompressScatterSeries.java:46)
at org.eclipse.swtchart.internal.compress.Compress.compress(Compress.java:149)
at org.eclipse.swtchart.internal.series.SeriesSet.compressAllSeries(SeriesSet.java:308)
at org.eclipse.swtchart.internal.PlotArea.setBounds(PlotArea.java:113)
at org.eclipse.swtchart.internal.ChartLayout.layoutPlot(ChartLayout.java:413)
at org.eclipse.swtchart.internal.ChartLayout.layout(ChartLayout.java:138)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1744)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:1056)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:1007)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:963)
at org.eclipse.swtchart.Chart.updateLayout(Chart.java:347)
at org.eclipse.swtchart.Chart.handleEvent(Chart.java:322)
at org.eclipse.swtchart.extensions.core.AbstractHandledChart.handleEvent(AbstractHandledChart.java:28)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5227)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1340)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1366)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1345)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:1104)
at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1527)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:931)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:693)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:197)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1744)
at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1530)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:931)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:693)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:197)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1744)
at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1530)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:931)
at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:204)
It seems there is a memory leak in the event processing somewhere in SWTChart, maybe a listener seems to hold reference to the compressor, so it creates over and over again data items that then fill up the whole heap.
Currently I see over 400 instance of the CompressScatterSeries taking up 1.5GB ob space for only the boolean arrays
java.lang.OutOfMemoryError: Java heap space
at org.eclipse.swtchart.internal.compress.CompressScatterSeries.addNecessaryPlots(CompressScatterSeries.java:46)
at org.eclipse.swtchart.internal.compress.Compress.compress(Compress.java:149)
at org.eclipse.swtchart.internal.series.SeriesSet.compressAllSeries(SeriesSet.java:308)
at org.eclipse.swtchart.internal.PlotArea.setBounds(PlotArea.java:113)
at org.eclipse.swtchart.internal.ChartLayout.layoutPlot(ChartLayout.java:413)
at org.eclipse.swtchart.internal.ChartLayout.layout(ChartLayout.java:138)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1744)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:1056)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:1007)
at org.eclipse.swt.widgets.Composite.layout(Composite.java:963)
at org.eclipse.swtchart.Chart.updateLayout(Chart.java:347)
at org.eclipse.swtchart.Chart.handleEvent(Chart.java:322)
at org.eclipse.swtchart.extensions.core.AbstractHandledChart.handleEvent(AbstractHandledChart.java:28)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5227)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1340)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1366)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1345)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:1104)
at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1527)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:931)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:693)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:197)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1744)
at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1530)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:931)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:693)
at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:197)
at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1744)
at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1530)
at org.eclipse.swt.widgets.Control.setBounds(Control.java:931)
at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:204)