首页 > 解决方案 > 我收到 OutOfMemoryExceptions,但我的跟踪文件比我的可用内存小得多

问题描述

正如标题所说,我有大量可用内存,但在处理跟踪和调用数据源上的属性时,我不断收到 OutOfMemoryExceptions。为什么会这样?

标签: .net-traceprocessing

解决方案


ETL 文件格式被设计为非常节省空间,并且还支持可选压缩。由于这些因素,从 .etl 文件中获取数据并将其转换为我们更有用的结构通常需要比文件的原始大小更多的内存。但是,可以采取两个步骤来降低 OutOfMemoryExceptions 的可能性:

  1. 不要使用不需要的数据源。即使您的代码没有调用数据源上的任何属性,只要通过调用其 Use 方法将其打开,数据源就会处理事件并准备数据以供使用。

  2. 确保您的程序作为 64 位进程运行。默认的 Visual Studio C# 项目设置是编译面向 AnyCPU 的程序,但更喜欢将其作为 32 位进程运行。取消选中项目的构建属性中的“首选 32 位”选项或将项目的构建配置切换到 x64 将导致您的程序作为 64 位进程运行。


推荐阅读