가비지 컬렉터가 출동하는 자체가 비용이 비싸다.
참조가 0이 아니어서 살아남는 애들은 다음 번에도 살아날 확률이 있다고 보고 세대를 한 단계 올려주고 그 세대를 검사하지 않는다.
다시 검사를 할 때는 1세대는 2세대가 되고 새로 살아남은 애들은 1세대가 된다.
3세대를 돌고도 메모리가 모자란 상황이 되면 1세대도 돈다. 그러고도 모자라면 상위세대를 검사
(디스포즈 : 세대 올릴 필요없이 바로 처리해주세요.) 라고 하더라도 살아남을 가능성 있음
가비지 컬렉터가 세대를 결정하는 범위는 설정가능하지만 끌 수는 없다.
[출처:명경지수후니]
using System;
class Program
{
/*
ref: Reference(참조형)
1. 해당 변수를 참조형으로 만들어준다.(C Point와 똑같다)
2. Point는 주소를 저장하는 변수가 더 생기다면
참조는 int _val라는 이름이 하나 더 생긴다고 보면 된다.
3. ref는 호출 전에 초기화되어야 하고 메서드 내에서 변경 여부가 선택 사항
이다
[out]
1. out은 호출 전에 초기화할 필요가 없고 메서드 내에서 반드시 값을 할당해야 된다.
*/
private static void ChangeValue(ref int _val)
{
_val = 100;
}
private static void ChangeValueOut(out int _val)
{
_val = 200;
}
}

1) 클래스가 동적할당을 당하면
스택에 클래스에 저장이 되고
클래스 객채화 된 거는 힙 영역으로 간다.