Решил я значит поиграть со слабыми ссылками:
var mc = new ManagedClass();
var wr = new WeakReference(mc);
Console.WriteLine(wr.Target ?? "not exist");
mc = null;
GC.Collect();
Console.WriteLine(wr.Target ?? "not exist");
Если добавить атрибут то выйдет следующий результат:
ManagedClass
not exist
Если же нет:
ManagedClass
ManagedClass
И вот вопрос, почему MethodImpl(MethodImplOptions.AggressiveOptimization) не установлен везде по умолчанию? Ведь все по итогу работает так как, и ожидалось: если на объект нет ссылки то GC его удаляет, если есть то не трогает.