1. Form IDisposable 호출 에러

Close이벤트는 IDisposable 인터페이스 가상 함수 Dispose를 호출하지 않음

그래서 IDisposable 없애버리고 Disposed라는 Form 이벤트로 대체


2. ControlCollection 2배수 Dispose

ControlCollection에서 특정 Control르 Dispose하면 Collection에서 삭제된다는건 알고 있었지만

쌩무시하고 Dispose + RemoveAt으로 짰었넹?

다지우고 indexing 포문으로 바꿔버림


3. DFS Dispose

상위 클래스는 하위 클래스의 Dispose를 호출해야함

IDisposable를 상속한 클래스가 상위 클래스 멤버로 선언되면, 상위 클래스도 IDisposable를 상속하거나, Dipose함수를 직접 구현해 하위 클래스의 Dispose를 호출해야한다.


4. 최고 수준의 GC 관리

GC 레이턴시 설정

GCLatencyMode oldMode = GCSettings.LatencyMode;
RuntimeHelpers.PrepareConstrainedRegions();
GCSettings.LatencyMode = GCLatencyMode.Batch;


GC 강제 Collect

GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);

GC.WaitForPendingFinalizers (); // 스레드를 멈춰도 상관없으면 호출함


저번주엔 타이머로 GC돌리는 ㅄ짓했다가 메모리 릭만 더 켜져서 이번에 삭제해버림