1. Using finalizers in .NET is generally not recommended due to various issues and downsides they introduce.
2. Finalizers are not guaranteed to run deterministically and can cause objects to remain in memory longer than needed, hurting performance.
3. They run on a separate thread, so new object creation may outpace finalizer execution, risking out of memory errors over time. Any exceptions in a finalizer will crash the application.