메모리 풀링
할당된 메모리를 해제할 때, 메모리를 지우지 않고 임시 보관처럼 바로 지우지 않는 것.
다시 메모리가 필요할 때, 해당 메모리를 재사용하는 것.
메모리 풀링을 사용하는 이유
1. 메모리 할당 과정에서 일어나는 컨텍스트 스위칭이 부담될 수 있다.
메모리 할당 -> 메모리 삭제 -> 메모리 할당 -> 메모리 삭제
메모리 할당 -> 메모리 임시보관 -> 메모리 재할당(재사용)
2. 메모리 파편화로 사용되지 않는 메모리가 있을 수 있다.
[ ] [ ] [ ] [ ] [ ] [ ] -> 3번과 5번 메모리가 할당될 크기보다 작아 사용되지 않을 수 있다.
=> 메모리 파편화는 현재 성능에서 잘 일어나지 않는다고 한다.
메모리 풀링 단계
0. 메모리풀의 단위는 메모리의 정보를 저장하는 헤더와 데이터 두가지 하나로 본다.
[ [Header][Data] ]
1. 메모리 할당시 메모리풀에 남아있는 메모리가 있는지 확인한다.
2. 있으면 해당 메모리에 데이터를 할당하고 없으면 메모리를 새로 만든다.
3. 데이터를 저장한 메모리 정보를 메모리 헤더에 저장한다.
4. 메모리 해제시 메모리를 삭제하지 않고 메모리풀에 반납한다.
코드)
https://github.com/Juzdalua/Study-Cpp-Server/blob/master/ServerCore/MemoryPool.h
Study-Cpp-Server/ServerCore/MemoryPool.h at master · Juzdalua/Study-Cpp-Server
Study C++ IOCP. Contribute to Juzdalua/Study-Cpp-Server development by creating an account on GitHub.
github.com