WeakReference

약한 참조를 사용하면 가비지컬렉션후에 참조가 사라진다.

동구님의 샘플코드를 그대로 인용한다.
비쥬얼스튜디오 C# 릴리즈 모드에서는 정상적으로 실행 되지만 디버그 모드에서는 정상적으로 실행되지 않는다.
유니티에서도 정상적으로 실행 되지 않는다.

using System;

namespace ConsoleApplication1
{
    class Man
    {
    }

    class Test
    {
        public void Run()
        {
            TestStringReference();
            TestWeakReference();
        }

        // WeakReference Class를 이용해 약한 참조 테스트
        // 참조 중인 개체는 null이됨
        private void TestWeakReference()
        {
            Man m = new Man();
            WeakReference refMan = new WeakReference(m); //약한참조
            m = null;
            GC.Collect();

            Console.WriteLine("약한 참조 원본: {0}", (m == null ? "죽었음" : "살았음"));
            Console.WriteLine("약한 참조 참조: {0}", (refMan.Target == null ? "죽었음" : "살았음"));
        }

        // 강한 참조 테스트
        // 참조 중인 개체는 null이 되지 않음
        private void TestStringReference()
        {
            Man m = new Man();
            Man refMan = m; //강한 참조
            m = null;
            GC.Collect();

            Console.WriteLine("강한 참조 원본: {0}", (m == null ? "죽었음" : "살았음"));
            Console.WriteLine("강한 참조 참조: {0}", (refMan == null ? "죽었음" : "살았음"));
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Test test = new Test();
            test.Run();
            //Console.ReadKey();
        }
    }
}

릴리즈 실행 결과)  정상적으로 약한 참조 참조가 없다.

강한 참조 원본: 죽었음
강한 참조 참조: 살았음
약한 참조 원본: 죽었음
약한 참조 참조: 죽었음

디버그 및 유니티 실행 결과)  정상적으로 약한 참조 참조가 살아 있다.

강한 참조 원본: 죽었음
강한 참조 참조: 살았음
약한 참조 원본: 죽었음
약한 참조 참조: 살음

참조)
http://ehdrn.tistory.com/335