我创建了一个读取文件并获取文件元数据的应用程序。当我启动应用程序时,私有工作集大约为 8MB(在任务管理器中查看)。当我扫描文件时,内存高达 150MB 并保持在那里。如果我使用相同的应用程序实例添加额外的文件,内存就会堆积起来。为了理解这种行为,我使用了一个内存分析器(Red gates),它向我展示了以下统计数据:-
在 150MB 的私有工作者集内存中
- 非托管内存:94MB
- 其他资源(字符串、数组等):30MB
这让我感到困惑,因为我没有使用任何非托管代码或任何 Pinvoke 调用。我也试过 GC.Collect() 没有成功。
有人可以指导我如何减少我的应用程序的非托管内存使用量以及可能的原因。
提前致谢