【发布时间】:2020-01-06 06:54:32
【问题描述】:
我将 .NET Framework 4.6.2 (VB) 用于 Windows 服务。我正在使用 NLog 毫无问题地编写日志文件。我现在添加了一个日志查看器实用程序,它将显示日志文件的最后 100 行。我已经使用了各种方法来读取文件,但似乎无法逃避我最终需要遍历整个文件以获取所需行的现实。这不是问题。
我遇到的问题是,在我读完文件后,它似乎永远不会从内存中释放出来。当我启动我的应用程序时,它使用了大约 16MB 的内存。读取(最多 10MB 的文件)后,它使用了大约 38.5MB。即使是清除 List(Of String) 或强制垃圾回收之类的事情也永远不会完全释放内存。
我使用的可能是最简单的阅读版本:
Dim LogEntries As List(Of String) = System.IO.File.ReadLines(LogFile).ToList()
LogEntries.Clear()
我在 ReadLines 和 LogEntries.Clear() 步骤之间执行其他任务,但即使我只使用上面显示的行,问题仍然存在。
我希望在清除 LogEntries 列表时将内存使用量返回到大约 16MB,但我能够得到的最低值(在GC.Collect() 之后)大约是 22MB。谁能给我解释一下?
【问题讨论】:
-
次要附录 - 我只是让我的应用程序坐了大约 40 分钟,最终释放了内存。我想我的问题现在变成了,我必须立即发布哪些选项?
标签: vb.net .net-4.6.2