using System;
// 1.언제 수집되는가 ? Context스위칭시간 10ms정도를 가비지시스템이 작동한다.
// 메모리를 일단 다 쓰게 한후에 어느정도 다 찼을 때 메모리를 비워준다.
// ( 메모리의 이동을 줄인다. )
// 2.세대 개념 0, 1, 2세대(관리 힙)로 차례대로 진행된다.
// 3.소멸자 호출
// C#과 Java는 소멸자를 만들지 않는다.
// 대신 IDisposable 인터페이스를 구현해라.
// WINDOW API를 가져다 쓸 때 HANDLE 같은것을 해제 시켜 줄 때만 소멸자의 역할을 만든다.
class Point
{
public int x;
public Point()
{
Console.WriteLine("Point.Point()");
}
public void Dispose()
{
Console.WriteLine("여기서 소멸자의 역할을 하게 해라.");
}
// c#도 소멸자를 만들 수 있다.( finalize라고 부른다. )
// 하지만 정확히 언제 호출 될지를 알 수 없다.
//~Point()
//{
// Console.WriteLine("Point.~Point()");
//}
}
class Test
{
public static void Main()
{
{
Point p1 = new Point();
p1.Dispose(); // 소멸 작업이 필요한 경우..호출
}
//GC.Collect(0); // 강제로 가비지 Collection을 한다.
//GC.Collect(0);
//Console.WriteLine("{0}", GC.CollectionCount(0));
Console.WriteLine("AAA");
}
}