1.가비지 컬렉터
-가비지 컬렉터는 사용자를 대신하여 메모리를 관리하여 사용하지 않는 객체를 제거한다.
-가비지 컬렉터 효율적이라도 힙에 새로운 객체를 생성*삭제는 과정은 꽤 적지않는 비용을 소비한다.
-기술적으로 몇가지만 고려하면 가비지 컬렉터의 작업을 현저히 줄일 수 있다.
2.지역변수 내의 객체 생성 자제하고 지역변수는 멤버로 선언하자.

-위의 메서드가 호출 될 때마다 Font 의 객체를 만든다.

-위의 메서드는 Font를 멤버변수로 만들어 재사용하도록 개선했다.
-메서드 내의 객체를 생성한다면 멤버변수로 만들어 가비지를 줄일 수 있다.
3.자주 사용되는 참조타입을 정적변수로 만들자.

-위 코드는 Brush.Black은 정적 속성으로 만들고 Brush.Black를 호출 할떄 객체가 생성함으로써 가비지를 최소화 한다.
4.변경 불가능한 타입 사용시
-System.string은 객체가 생성되면 객체가 가지고 있는 문자열의 내용은 수정이 불가능하다.
-프로그래밍 상 객체내의 문자열을 변경할 수 있는 것처럼 보이지만 새로운 문자열 객체를 생성하는 것이다.
-그래서 이전의 문자열 객체는 가비지가 된다.

-문자열 보간법을 사용하여 코드를 최소화하거나 StringBulider 클래스를 사용하면 된다.
*문자열보간

*StringBulider

결론
앞서 말한 방법들을 유념하여 가비지 생성을 억제하려고 노력하자.
'C# > 이펙티브 C#' 카테고리의 다른 글
| 아이템16.생성자 내에서는 절대로 가상함수를 호출하지 마라. (0) | 2023.07.20 |
|---|---|
| 아이템 13. 정적 클래스 멤버를 올바르게 초기화하라. (0) | 2023.07.05 |
| 아이템12. 할당 구문보다 멤버 초기화 구문이 좋다. (0) | 2023.07.03 |
| 아이템11. NET 리소스 관리에 대한 이해 (0) | 2023.07.02 |
| 아이템9.박싱과 언박싱을 최소화하라. (0) | 2023.06.30 |