As im reading through 3 books about GC , ive notice some strange fact :
C# via CLR
CriticalFinalizerObject : the CLR treats this class and classes derived from it in a very special manner

what ???
“not find enough memory to COMPILE a method? ” IMHO – the code should be already compiled… no ?
when Im writing c# code – the whole code is compiled to IL before its running… no?
but according to the text – at RUNTIME – he MAY find insufficient memory for compile…
Help ?
The JIT compiler only compiles methods from IL to native code at runtime the first time they are executed. As you might expect, this requires extra memory. So, normal finalizers are only compiled right before they are exeucted by the cleanup thread.
An object derived from
CriticalFinalizerObjecthas it’s finalizer compiled immediately, so no extra memory is required to execute it at program shutdown. This is for objects that must have their finalizer executed if at all possible (nonwithstanding a power cut or similar)