我正在我的应用程序上运行内存分析器以查找可能的内存泄漏。 System.Data.Metadata.Edm.TypeUsage 对象的数量一直在增长,看起来这可能是我的内存问题的原因。
有谁知道从内存中释放这些 TypeUsatge 对象的方法吗?它们看起来像是内部 Entity Framework 对象,因为我的代码中没有对它们的任何引用。我已确认我已将上下文对象包装在一个 using block 中,并且正在释放内存,但这种 Type 用法并不想消失。
如果您能提供任何帮助,我们将不胜感激。
最佳答案
您可能正在查看 Entity Framework 在底层使用的一级缓存(Change Tracker)。要了解更多信息,请查看此内容。如果这里有内存泄漏,我会感到惊讶,这很可能只是正常行为。您看到有多少内存泄漏?
要释放内存,请尝试使用其他合并选项(如 NoTracking)。默认值为 AppendOnly,它将保留您可能再次使用的内存中的类型。 NoTracking 合并选项每次都会进入数据库并且不会在内存中保留任何内容。
希望这对您有所帮助。
关于c# - Entity Framework TypeUsage 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573897/