.net-traceprocessing - 我收到 OutOfMemoryExceptions,但我的跟踪文件比我的可用内存小得多
问题描述
正如标题所说,我有大量可用内存,但在处理跟踪和调用数据源上的属性时,我不断收到 OutOfMemoryExceptions。为什么会这样?
解决方案
ETL 文件格式被设计为非常节省空间,并且还支持可选压缩。由于这些因素,从 .etl 文件中获取数据并将其转换为我们更有用的结构通常需要比文件的原始大小更多的内存。但是,可以采取两个步骤来降低 OutOfMemoryExceptions 的可能性:
不要使用不需要的数据源。即使您的代码没有调用数据源上的任何属性,只要通过调用其 Use 方法将其打开,数据源就会处理事件并准备数据以供使用。
确保您的程序作为 64 位进程运行。默认的 Visual Studio C# 项目设置是编译面向 AnyCPU 的程序,但更喜欢将其作为 32 位进程运行。取消选中项目的构建属性中的“首选 32 位”选项或将项目的构建配置切换到 x64 将导致您的程序作为 64 位进程运行。
推荐阅读
- java - 在 Firebase 中更改数据时更新 ArrayList
- java - 有没有办法使用 listview 显示所有 sqlite 表和内容?
- javascript - 即使没有选中任何复选框,也定义一个数组
- python-3.x - Google Colab(Python、jupyter notebook)终端输入
- selenium - Safari:无法建立新会话
- python - Tavern(pytest),禁用 SSL 证书验证
- python - Python for 循环,范围计数器
- nginx - 带有 RTMP 模块的 nginx.conf:使用 ffmpeg 在多个视频流上添加水印
- c# - 即使允许防火墙,HttpListener 也无法通过网络工作
- c# - 是否可以从 Azure 表中仅获取一列值?