C#/이펙티브 C#

아이템15.불필요한 객체를 만들지 마라

공부를하자 2023. 7. 19. 02:22

1.가비지 컬렉터

-가비지 컬렉터는 사용자를 대신하여 메모리를 관리하여 사용하지 않는 객체를 제거한다.

-가비지 컬렉터 효율적이라도 힙에 새로운 객체를 생성*삭제는 과정은 적지않는 비용을 소비한다.

-기술적으로 몇가지만 고려하면 가비지 컬렉터의 작업을 현저히 줄일 있다.

 

2.지역변수 내의 객체 생성 자제하고 지역변수는 멤버로 선언하자.

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

 -위의 메서드는 Font  멤버변수로 만들어 재사용하도록 개선했다.

 -메서드 내의 객체를 생성한다면 멤버변수로 만들어 가비지를 줄일 있다.

3.자주 사용되는 참조타입을 정적변수로 만들자.

 

- 코드는 Brush.Black 정적 속성으로 만들고 Brush.Black 호출 할떄 객체가 생성함으로써 가비지를 최소화 한다. 

4.변경 불가능한 타입 사용시

 -System.string 객체가 생성되면 객체가 가지고 있는 문자열의 내용은 수정이 불가능하다.

 -프로그래밍 객체내의 문자열을 변경할 있는 것처럼 보이지만 새로운 문자열 객체를 생성하는 것이다.

 -그래서 이전의 문자열 객체는 가비지가 된다.

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

*문자열보간

*StringBulider

결론

앞서 말한 방법들을 유념하여 가비지 생성을 억제하려고 노력하자.