CriticalFinalizerObject is an abstract class in .NET (System.Runtime.ConstrainedExecution) that gives the following to its inherited classes:
1. As part of the class' construction the CLR JIT compiles the finalize methods in the inheritance hierarchy. This helps guarantee that the finalizer will be able to be called, even under low memory conditions when the JIT compile might not be able to function
2. The finalize of method of derived classes happens after the finalize method of classes that do not derive from CriticalFinalizerObject.
3. The finanlize method will be called even under a sudden abort by the application host.