본문 바로가기

Programming/WPF30

C# Dispose. vs GC (Garbage Collection) : 메모리관리 C#에서는 C++과 다르게 명시적으로 리소스를 해제하는 코드가 (잘)안보인다. C++에서는 new-delete, alloc - free가 항상 쌍으로 이루어져야했다. 아니면 디버깅 종료시 MemoryLeak을 찾았다고 띄워준다. 근데 C#에서는 이러한 작업을 하지 않아도.. Garbage Collector가 스스로 탐색하면서 사용되지 않는 리소스를 해제해준다. 오오오~~~ 근데 이 방법에는 몇가지 주의할게 있다. 1. 관리되지 않는 코드는 GC가 제거할 수 없다. 2. 동시에 너무 많은 객체 생성등으로 갑자기 메모리를 잡아먹을경우.. 한동안 남아있는다. 2번을 위한 대책으로 리소스가 불필요해진 시점에 GC.Collect()를 호출하면 되기는 한다. 다만.. GC.Collect()가 도는동안 엄청 느려질 .. 2022. 7. 19.
Singleton구현. Singleton은 다음과 같이 구현하면 된다. 구문이 C#이라 C#이야기 카테고리일뿐, static 메소드를 통해 가져오는건 같다 public class MyClass{ #region singleton private static volatile MyClass instance; //volatile키워드는 붙여주는것을 추천 private static object locker = new Object(); public static MyClass GetInstance(){ if( instance == null){ lock( locker){ if( instance == null){ instance = new MyClass(); } } } return instance; } #endregion } 위와 같이 객체를 .. 2022. 7. 18.
.NET Framework 개발자가 알아둬야 할 것중 하나. CLR CLR. CLR. CLR. .NET Framework를 개발하다보면 많이 접하는 단어. CLR. Common Language Runtime이다. C#, C++(Managed), ASP.NET 모두 CLR위에서 돌릴 수 있다. 어떻게 실행되냐하면.. 위 그림처럼.. 관리되는 코드는 컴파일러에 의해 중간단계 언어(MSIL)로 변환되고, 이 중간단계 언어를 CLR이 읽어서 CLR이 실행되는 환경에 맞게, 실제 바이너리로 실행해주는 것. CLR의 역할은 중간단계 언어를 실행해주는 역할이다. C#이든 Managed C++이든, 모두 CLR이 읽을 수 있는 바이트코드로 변환되므로 다른 언어로 개발된 라이브러리를 참조해다 쓸수도 있다. 관리되는 코드 안에서는 다른 언어간 상호작용이 더 수월해진다. 기존 C++에서 다.. 2022. 7. 7.
C#, XML파싱하기 C# 진짜 개발하긴 편하네.. XMLElement를 이용하면 쉽게 XML파싱을 할 수 있다. string xmlPath = 읽을 XML의 Path; XmlDocument xDoc = new XmlDocument(); xDoc.Load(xmlPath); 2011. 3. 23.
CLR via C# chapter2. 빌드, 패키지, 배포, 그리고 app와 타입 관리 (4) 보호되어 있는 글 입니다. 2009. 9. 23.
CLR via C# chapter2. 빌드, 패키지, 배포, 그리고 app와 타입 관리 (3) 보호되어 있는 글 입니다. 2009. 9. 17.
728x90