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