我在 vb.net 中有以下代码:
Public Async Function WriteData(buffer() As Byte, offset As Integer, count As Integer) As System.Threading.Tasks.Task
Try
Using data_writer = IO.WindowsRuntimeStreamExtensions.AsStreamForWrite(_outputStream)
Await data_writer.WriteAsync(buffer, offset, count)
Await data_writer.FlushAsync
End Using
Catch ex As Exception
Logger.Write(ex)
End Try
End Function
我调用函数 WriteDate 太多了,但我注意到每次调用该函数时内存都会增加,因为您可以看到数据写入器流和 _outputStream 因使用而被释放。
当我运行 vs Profiler 时,分析器显示 95% 的内存被我的代码中的“缓冲区”字节数组保留过多。
1-您在我的代码中看到任何问题吗?2-如何清除字节数组?
-- 我在 Await data_writer.FlushAsync 行之后向该函数添加了以下代码
buffer = Nothing
GC.Collect()
所以我的内存并没有像以前那样增加,但是我在我的应用程序中调用 WriteData 太多了,我读到不建议调用 GC.Collect 太多。
不调用 GC.Collect 内存会跳转到 300 MB,而 GC.Collect() 内存不会超过 50MB。
请指教。
谢谢