我已经接管了一个Entity Framework 4.1项目,其中已经选择将大型BLOB存储在数据库中(最大200MB)。这些blob通过LINQ to Entities加载到内存中。当然,这对绩效产生了相当不利的影响......
它也让我有机会看看EF内存消耗,现在我看到当我读取一个包含50MB blob的对象时,内存增加了150MB。我知道有一个'当前值'和'原始值'集合,但显然有第三个副本。这是什么?
答案 0 :(得分:1)
默认情况下,上下文应保留原始值和当前值的副本。
对于只读使用,您应该能够通过禁用更改跟踪将内存占用减少50M。
第三个副本可能是blob的一些非托管副本,但肯定会知道procdump。