프로그램 아키텍쳐/디자인패턴

객체 풀링 ( Object Pooling )

본클라쓰 2009. 12. 20. 16:18

 

객체지향 프로그래밍이란 객체를 개발하고 객체 사이에 관계를 맺아 주는 것을 프로그래밍하는 것이라 할 수 있다. 객체지향으로 개발된 소프트웨어는 시작해서 종료될 때까지 다양한 객체를 생성하게 된다. 특히 EJB 기술을 사용하는 대형 웹 사이트에서는 순간적으로 수십, 수백 개의 객체가 생성되었다가 소멸되며 하루를 기준으로 봤을 때 생성되었다가 소멸되는 객체의 수는 수백만, 수천만 개에 이른다고 볼 수 있다.

 

이처럼 계속해서 객체가 생성되고 소멸되는데, 이들 객체 중에서는 재사용이 가능한 것들이 존재할 수 있다. 이처럼 사용이 끝난 객체를 소멸시키는 것이 아니라 별도의 장소에 저장해 두었다가 필요할 때 다시 꺼내 쓰는 패턴을 "객체 폴린(Object Pooling)'이라고 하며, 이 때 객체를 저장하는 공간을 '폴(pool)'이라고 부른다.

 

객체 풀링을 사용하게 되면 객체를 생성하는데 필요한 시간을 줄일 수 있다. 일반적으로 객체를 생성하는 데는 많은 시간이 소비되는데 이 시간을 줄입으로써 어플리케이션의 속도를 증가시킬 수 있다. 또한 가비지 콜렉터가 소멸시킬 객체의 수가 줄어들기 때문에 가비지 콜렉션에 의한 어플리케이션 자체의 시간을 감소시킬 수 있다. 즉, 빈번한 메모리 할당/해제 작업을 줄임으로써 메모리 관리에 소비되는 시간이 줄어든다.