Wednesday, August 13, 2008

Advanced Generic Handle - Reference Count

Generic Handle Class를 만들어 사용하게 되면 대입 연산과 같은 여러 작업을 진행할 때 불필요한 메모리 복사가 많이 일어나 오버헤드가 된다. 값을 읽기만 하기 위해 대입하는 경우 값을 복사하지 않고 레퍼런스만 넘겨주면 이를 줄일 수 있는데, 핸들 클래스를 통해 참조되는 값들은 동적으로 생성된 것들이기 때문에 해제를 하려면 자신을 참조하고 있는 객체가 몇개인지 확인해 보고 참조하고 있는 값이 없을 때 해제하면 된다.

이를 위해 제네릭 핸들 클래스에서 사용하는 방식이 reference count다. 복사나 대입 연산이 발생하는 경우 핸들 클래스에서 가지고 있는 reference count를 증가시키고 반대의 경우 감소시키는 방식으로 카운터를 유지하다가 레퍼런스가 없게 될 때 최종적으로 소멸시키게 된다.

No comments:

Post a Comment