Roy*_*mir 0 .net c# clr .net-4.0
正如我在阅读有关GC的3本书时,我注意到一些奇怪的事实:
C#通过CLR
CriticalFinalizerObject:CLR以非常特殊的方式处理此类和从中派生的类
CriticalFinalizerObject
什么 ???
"没有找到足够的内存来编译方法? "恕我直言 - 代码应该已经编译了......不是吗?
当我编写c#代码时 - 整个代码在运行之前被编译为IL ...不是吗?但根据文本 - 在RUNTIME - 他可能发现编译的内存不足 ......
救命 ?
the*_*oop 5
JIT编译器仅在第一次执行时在运行时编译从IL到本机代码的方法.正如您所料,这需要额外的内存.因此,正常的终结器仅在清理线程执行之前编译.
从派生的对象CriticalFinalizerObject立即编译它的终结器,因此在程序关闭时不需要额外的内存来执行它.这适用于必须尽可能执行终结器的对象(尽管有停电或类似情况)
归档时间:
13 年,10 月 前
查看次数:
157 次
最近记录: