【发布时间】:2017-08-19 20:27:57
【问题描述】:
据我了解,JIT 代码在程序运行时永远不会从内存中释放出来。这是否意味着在表达式树上重复调用.Compile() 会泄漏内存?
这意味着只在静态构造函数中编译表达式树或以其他方式缓存它们,这可能不那么简单。对吧?
【问题讨论】:
-
为什么要重复编译同一个表达式?也许提供一些代码示例?
-
为什么假设
.Compile()在同一个表达式树上? -
@Evk 因为有时您不会将它们缓存在
Dictionary<>或静态变量中...这是一个有趣的问题。 -
我没有代码示例,我认为不需要它。问题是编译表达式树是否会不可逆地占用一些内存。这应该意味着,例如,每当用户在文本框中键入内容时,开发人员都需要小心生成和编译新树。
标签: c# .net memory-leaks expression expression-trees