【问题标题】:I'm getting OutOfMemoryExceptions, but my trace file is much smaller than my available memory我收到 OutOfMemoryExceptions,但我的跟踪文件比我的可用内存小得多
【发布时间】:2019-07-18 17:33:00
【问题描述】:

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

【问题讨论】:

    标签: .net-traceprocessing


    【解决方案1】:

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

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

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

    【讨论】:

    • 切换到 x64 配置可能不起作用。特别是可以将 x64 解决方案配置映射到 AnyCPU 项目配置,这意味着您的 x64 项目仍以 32 位运行。这很令人困惑,但取消选中“首选 32 位”效果很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2010-10-05
    • 2015-11-23
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多