Wpf 使用dynamicdatadisplay vb.net的内存泄漏
我目前正在使用DynamicDataDisplay在用户界面上显示频谱,它工作得很好,但有一个巨大的内存泄漏(大约1-2MB/周期)。当我用一个新的图形更新它时,它似乎并没有释放所有的内存。还有其他人遇到过这个问题吗?我该如何着手解决这个问题呢? 提前谢谢。请参阅下面的代码Wpf 使用dynamicdatadisplay vb.net的内存泄漏,wpf,vb.net,charts,memory-leaks,Wpf,Vb.net,Charts,Memory Leaks,我目前正在使用DynamicDataDisplay在用户界面上显示频谱,它工作得很好,但有一个巨大的内存泄漏(大约1-2MB/周期)。当我用一个新的图形更新它时,它似乎并没有释放所有的内存。还有其他人遇到过这个问题吗?我该如何着手解决这个问题呢? 提前谢谢。请参阅下面的代码 Dim P1Chart As New Microsoft.Research.DynamicDataDisplay.ChartPlotter() Dim P1ChartDateTime As New Windows.Contr
Dim P1Chart As New Microsoft.Research.DynamicDataDisplay.ChartPlotter()
Dim P1ChartDateTime As New Windows.Controls.Label()
…………………….
‘First remove old line graph from chart
ClearSpectrum(iTabIndex)
‘Load arrays with new spectral data
For SpectCtr = 0 To ScanElements
If Spectrum = ScanType.Absorbance Then
x(SpectCtr) = SpectCtr * 0.5 + 800.0 ‘Convert to wavelength if absorbance spectra
Else
x(SpectCtr) = SpectCtr
End If
y(SpectCtr) = sr.ReadLine()
Next
Dim xDataSource = AsXDataSource(x)
Dim yDataSource = AsYDataSource(y)
Dim xyDataSource As New CompositeDataSource(xDataSource, yDataSource)
Select Case StreamNumber
Case 1
P1Chart.AddLineGraph(xyDataSource, Colors.Red, 1, “Probe A”)
P1ChartDateTime.Content = String.Format(“Time: {0}, X-Axis: {1}”, FileSaveTime, xAxisTitle)
Case 2
P2Chart.AddLineGraph(xyDataSource, Colors.Red, 1, “Probe B”)
P2ChartDateTime.Content = String.Format(“Time: {0}, X-Axis: {1}”, FileSaveTime, xAxisTitle)
End Select
………
Private Sub ClearSpectrum(ByVal iTabIndex As Integer)
Dim nIndex As Integer
Select Case iTabIndex
Case 1
For Each child1 As IPlotterElement In P1Chart.Children
If TypeOf child1 Is Microsoft.Research.DynamicDataDisplay.LineGraph Then
RemoveList.Add(child1)
End If
Next
For Each child1 In RemoveList
P1Chart.Children.Remove(child1)
Next
……………..
RemoveList.Clear()
如果是WPF,则应添加该标记。您可以尝试使用GC.Collect()调用垃圾收集器,并且子项的末尾显示您如何确定内存泄漏?你用了什么工具?谢谢你的垃圾收集器建议。Chris Dunaway:我使用Process.GetCurrentProcess()方法获取每个周期的工作集,然后将其写入文件。在我绘制了日志图之后,很明显,随着时间的推移,内存使用会增加