c# – Expression.Compile和Garbage Collection
发布时间:2020-12-15 17:41:10 所属栏目:百科 来源:网络整理
导读:当我将表达式编译成可执行代码并获取代理时 – 代码是否在不再有对该委托的引用时收集垃圾? 有没有关于这方面的文件?因为我没有在MSDN中找到任何有用的东西. 解决方法 是的,代码可以被垃圾回收.当您对T的表达式调用编译时,代码将编译为 DynamicMethod,那些
当我将表达式编译成可执行代码并获取代理时 – 代码是否在不再有对该委托的引用时收集垃圾?
有没有关于这方面的文件?因为我没有在MSDN中找到任何有用的东西. 解决方法
是的,代码可以被垃圾回收.当您对T的表达式调用编译时,代码将编译为
DynamicMethod,那些可以进行垃圾回收.
实际上,它没有在MSDN上显示,但是您可以看看DLS中的Expression< T> .Compile的实现,它是.net 4.0发布的: http://dlr.codeplex.com/SourceControl/changeset/view/54115#990638 虽然编译器的实现在.net 3.5中不同,但DynamicMethods仍然使用(源:我自己,我在Mono中实现了System.Linq.Expressions). 编译表达式树不可收集的情况是当您使用Expression<T>CompileToMethod时,并且您从AssemblyBuilder传递了一个MethodBuilder,该程序库未使用RunAndCollect标志创建. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |