기본 콘텐츠로 건너뛰기

라벨이 풀링인 게시물 표시

메모리 풀링

탑건매직 | 탑건매직 http://blog.naver.com/topgunmagic/120033903901 메모리 풀링? : 메모리 풀링이란 간단히 말해서 필요할때마다 new나 malloc을 사용하는것이 아니고, 필요한 만큼에 메모리를 미리 잡아두고 사용하는것을 말한다. 그럼 이것을 어따쓰냐.... 잦은 메모리 할당은 성능을 저하시킬수 있다. 따라서 한번에 미리 메모리를 잡아두고 사용한다면 성능면에서 매우 효율적일때 사용될수 있다. 위 MemPooler.h는 Edited from C8MemPool class (Hitel, gma 7 3) - 1CoinClear - 라는 사람이 만든건데, 메모리 풀링이 어떤식으로 돌아가는지 분석 해보도록 하자. 메모리 풀링은 언제 사용하나?? new와 delete가 빈번하게 반복 발생될때 메모리풀을 사용합니다. 게임에 사용자가 접속할때마다 사용자 객체를 new해주고 접속을 해제할때마다 delete를 해준다면 속도는 물론이고 메모리 단편화의 문제가 발생할 수 있기 때문에 시작할 당시 n개의 사용자 객체를 생성한뒤 접속할때 가져다 쓰고 접속을 해제할때 제거하지 않고 다시 사용할 수 있게 해주는 경우도 해당합니다. template<class Type> class MemPooler 템플릿 클래스를 사용하였습니다. 왜일까요? Type이 쓰이는 부분들을 일단 살펴 보도록 하겠습니다. m_nListBlockSize=sizeof(BlockNode)+sizeof(Type); 음...보시면 일단 사이즈를 잡는건데요. 그렇습니다. MemPooler 클래스 설계시 우리는 필요한 만큼의 메모리를 잡아야 하는데 이시점에서 이 필요한 만큼의 메모리가 어느정도인지 우리는 알수 없습니다. 이럴때 한번 사용했군요. Type* Alloc() 한 블럭을 사용할 시 사용가능한 메모리를 가리켜 그 주소를 리턴하는 함수인데요. 여기서 한블럭이라는건 차차 설명 하도록 하지요. 우리는 메모리풀링을 만들시 필요...