ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가비지 콜렉팅 + 스택(stack) 힙 (heap) +리플렉션등등 오류처리등..
    .NET/C# Basic 2008. 9. 30. 16:36
    반응형
    메모리 관리
    닷넷에서 사용하는 메모리 관리 방법은 가비지 콜렉션(Garbage Collection)
    가비지 콜렉터는 힙에서 더 이상 쓰이지 않는 객체를 찾아서 제거
    가비지 콜렉터는 System 네임스페이스에 GC(Garbage Collector)로 제공
    GC 객체의 Collect 메서드를 불러서 임의로 가비지 콜렉팅을 요구

    /////////// 가비지 콜렉팅 요구(테스트과정중에 런타임에러시 쓰면 가능할지도...
          System.GC.Collect();


    메모리가 가비지 콜렉터에 의해 관리
    더 이상 메모리를 풀어주는 고민이나 메모리 리크(Memory Leak)와 같은 문제를 생각할 필요가 없다




    data A ---> s (stack)A --- 스택

    |----> heap A , stack S(주소) --- 힙


    1 S=A; -- 스택: 휘발성 데이터
    2 S = new Su(A) -- 힙전: 원이 나갈때까지 그기억공간을 잡고있다


    c# 에서는 가비지 켈렉터가 알아서 메모리 해제시키고 관리한다
    c++ 에서는 수동으로 해줘야한다
    가비지 켈렉터는 OS상에서 해석 자기마음
    가비지 켈렉터가 없으면 멀티태스킹이 불가능하지 ㅎㅎ

    윈도우 xp 홈에디션과 프로페셔녈 차이
    홈에디션에는 서버기능이없고 프로페셔녈에는 IIS 가 존재한다
    실행상의 차이 - 서비스 저사양의 서버를 가볍게 쓸려면 서비스 를 스탑스키고 실행
    그와 같은 것을 수행하기 위해서 ....????
    윈도우 95와 98의 차이 98과 xp차이 xp 와 비스타의 차이
    95와 98의 차이 메모리 관리의 차이 !! 자동으로 프로그램 많이 쓰는곳에 자원을 할당시키는 기능이있다



    머리식힐때는 가벼운마음으로 웹서핑하자~! 게임금지


    리플렉션 사용하는곳
    테스터 모튤을 만들때 쓴다
    리플렉션(reflection)은 실행 타임에 Type 객체로부터 클래스 정보를 구하는 방법
    C#에서 좀 더 강력한 기능이 제공
    실행 타임에 클래스에 정의된 필드, 메서드 정보를 구하는
    Type type = pt.GetType();
        FieldInfo [] finfo = type.GetFields(); // 필드 정보

    외부객체를 당겨올때도 쓴다

    어트리뷰트

    클래스 매서드등등 기타 정보를 더 추가하는것
    컴파일할 때 컴파일러에 의해 쓰일 수도 있고, 리플렉션을 이용해서 실행 도중에 어트리뷰트 정보를 구할 수도 있다

       [Obsolete("이 메서드는 더 이상 사용되지 않습니다.")] /// 업데이트 정보를 유지하기위해서
       public static void Method() // 이 메서드는 더이상실행은 안된다...
       {}

    [STAThread] ////////뒤에서 한단단
       void Main()
       {}

    ~!! 웹메서드~!!!!! // 웹서비스의 구현 전신...
    ex)
    기상청에 기상정보를 웹페이지에 집어 넣기만한다면링크하기만하면되지만
    내가 필요한것은 현재의 온도 값이 필요하다 전송방식은 XML 코드를 제공해주는것이다
    무슨날 무슨도시의 온도가 필요하다면 코드상에서 참조걸고 메서드만 가져오는것
    [WebMethod]
       void string HelloWeb( string name )
       {}

    콜렉션 클래스
    콜렉션 클래스는 데이터를 저장하는 데이터 구조 클래스
    자주 쓰이는 데이터 구조를 구현해서 라이브러리로 제공
    ArrayList
    BitArray
    HashTable
    Queue
    SortedList
    Stack
    StringCollection



    기존 오류 처리 방식
    오류 처리하는 방법은 리턴 값을 이용해서 성공적으로 실행이 되었는지 아닌지 판단
    메서드를 성공적으로 실행했으면 true 값을 리턴하고, 오류가 있으면 false 값을 리턴하도록 프로그램을 구현


      bool DoIt() /// 기존방식
        {
            nError = 0;

            if ( nError )
                return false;
            else
                return true;
        }



    예외 처리
    기존 오류 처리 방식이 갖는 단점을 보완하면서 좀 더 보강된 오류 처리 방법이 예외 처리 방식
    메서드 안에서 오류가 발생하는 경우, 다음과 같이 예외 처리



    bool DoIt()
    {
        nError = 0;
        if ( nError )
           throw new System.Exception;
    }




    오류가 발생했을 때 오류를 처리할 수 catch 문 코드로 이동
    오류 처리 코드가 없다면 시스템에서 제공하는 예외 처리가 불려지면서 프로그램이 종료



    예외 처리
    예외 처리 방식은 라이브러리를 구축할 때 유용하게 사용
    리턴 값으로 오류를 처리하는 것이 아니기 때문에, 연산자 메서드와 같이 리턴 값으로 오류를 확인할 수 없는 경우에도 오류 처리가 가능




    try
       {
          DoIt();
       }
       catch ( Exception e )
       {
          // 오류 처리
       }



    C#에서 오류 처리 방법은 try/catch 문을 이용한 예외 처리 방식



    반응형

    '.NET > C# Basic' 카테고리의 다른 글

    클래스와 네임스페이스  (0) 2008.10.01
    C# 디버깅  (0) 2008.10.01
    C#에서의 데이터형  (0) 2008.10.01
    C# 오버플로우발생할때 오버플로우 점검 옵션  (0) 2008.09.30
    역어셈블리 IL DASM  (0) 2008.09.30
    실행인자  (0) 2008.09.30
    c# 주석 /// static  (0) 2008.09.30
    C#  (0) 2008.09.29

    댓글

Designed by Tistory.