오브젝트 풀링이 무엇일까?

박승우·2024년 11월 13일
0

자 94번째 키워드인 '오브젝트 풀링'에 대해서 알아 볼 것이다.

유니티로 개발 할 때 사용했었 던 적이 있어서 접근이 쉬웠다.

오브젝트 풀링이 뭐에요?

오브젝트 풀링은 객체를 미리 생성해 두고, 필요할 때 재사용하는 자원 관리 기법이다.

  • 이를 통해 객체를 새로 생성하거나 소멸시키는 비용을 줄여 성능을 높일 수 있다.
    오브젝트 풀링은 특히 짧은 시간 동안 빈번하게 생성되고 파괴되는 객체에 유리하다.

작동 원리

프로그램이 시작되거나 특정 시점에 객체를 미리 생성하여 풀(Pool)에 보관한다.
객체가 필요할 때마다 풀에서 꺼내어 사용하며, 사용이 끝난 객체는 다시 풀에 반환되어 재사용된다.
새 객체를 생성하는 대신 풀에서 꺼내 재사용하기 때문에 메모리 할당과 해제를 줄일 수 있다.

사용 예

게임 엔진: 게임에서 총알, 적, 파티클과 같이 자주 생성되고 파괴되는 객체를 오브젝트 풀링으로 관리하면 성능을 크게 향상할 수 있다.

서버 연결: 데이터베이스 연결 객체를 풀링하면 연결을 반복 생성/소멸하지 않고 필요한 순간에 풀에서 가져와 빠르게 사용할 수 있다.

스레드 풀: 여러 스레드를 미리 생성해 두고 필요할 때 활용하는 것으로, 서버가 동시에 여러 클라이언트 요청을 빠르게 처리하는 데 유리하다.

장점

메모리 효율성 증가: 객체 생성 및 해제를 반복하지 않으므로 메모리 누수를 줄이고 자원을 효율적으로 사용한다.
성능 향상: 객체를 매번 생성할 때의 부하가 줄어 프로그램 속도가 개선된다.

단점

메모리 사용량 증가 가능성: 너무 많은 객체를 미리 생성해 두면 오히려 메모리를 불필요하게 차지할 수 있다.
객체 관리의 복잡성 증가: 풀에서 객체를 제대로 반환하지 않으면 리소스가 낭비되거나 프로그램이 정상적으로 작동하지 않을 수 있다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글