garbage collector 3

[Effective C#] C# 표준 Dispose 패턴 이해하기

Implement a dispose pattern -> Link - .Net Framework 내부에서 비관리 리소스를 정리하는 표준화된 패턴 - 개발자들에게 IDisposable 인터페이스를 통해 리소스를 삭제할 수 있는 기능을 안정적으로 제공한다. - 비관리 리소스를 명시적으로 정리해야 한다는 사실을 잊거나 인지하지 못한 경우에도 finalizer를 통해 리소스가 정리될 수 있도록 해준다. 베이스 클래스에서의 작업 - 리소스를 정리하기 위해 IDisposable 인터페이스를 구현한다. - 멤버 필드로 비관리 리소스를 포함하는 경우에 한해 방어적으로 동작할 수 있도록 반드시 finalizer를 추가한다. -> 사용자가 Dispose()메서드를 항상 올바르게 호출할 것이라고 가정할 수 없다. 비관리 리소..

개발/C# 2021.01.02

[Effective C#]C# 멤버 초기화 - 할당 구문보다 멤버 초기화를 사용한다.

할당 구문보다 멤버 초기화(member initializer) 구문 사용 - 생성자가 여러개인 경우, 멤버 변수 초기화를 누락하여 사용할 수 있다. 멤버초기화는 이러한 누락을 방지할 수 있다. 1 2 3 4 5 6 public class MyClass { //컬렉션을 선언하는 동시에 초기화 private List labels = new List(); } Colored by Color Scripter cs 이와 같은 코드는 MyClass 타입에 몇개의 생성자가 추가되든 올바른 초기화를 사용할 수 있다. * 컴파일러는 모든 생성자의 시작 부분에 멤버 초기화 구문을 포함시킨다. 새로운 생성자가 추가되거나 사용자가 생성자를 선언하지 않아 기본 생성자가 만들어진 경우에도, 항상 생성자가 실행되기 전 멤버 초기화 ..

개발/C# 2020.12.30

[Effective C#] C# 가비지 컬렉터(Garbage Collector) 기초 / finalizer 이해하기

가비지 컬렉터(Garbage Collector, GC) 자동 메모리 관리자, 애플리케이션의 메모리 할당 및 해제를 관리한다. 즉 개발자는 메모리 관리를 위한 코드를 작성할 필요가 없다. 메모리 누수, 댕글링 포인터(dangling pointer), 초기화 되지 않은 포인터 등의 기타 메모리 관련 문제를 개발자가 직접 다루지 않게 된다. * dangling pointer : 유효한 곳을 가르키고 있지 않는 포인터 -관리되지 않는 리소스(Unmanaged Resource, 비관리 리소스)의 경우엔 개발자가 직접 관리해야 하며, 이벤트 핸들러, 델리게이트 등도 잘못 사용하면 이를 참조하고 있는 객체가 불필요하게 메모리에 남게 되므로 사용에 유의해야 한다. ->그럼에도 Garbage Collector가 메모리를..

개발/C# 2020.12.28
반응형