풀(컴퓨터 과학)
Pool (computer science)컴퓨터 과학에서, 풀은 사용 중에 획득하여 나중에 방출되는[clarification needed] 것이 아니라, 사용할 준비가[clarification needed] 되어 있는 자원의 집합이다.이러한 맥락에서 자원은 프로세스 외부의 파일 핸들 같은 시스템 자원이나 개체와 같은 내부 자원을 참조할 수 있다.풀 클라이언트는 풀에서 리소스를 요청하고 반환된 리소스에 대해 원하는 작업을 수행하십시오.클라이언트가 리소스 사용을 마치면 풀려서 분실하는 것이 아니라 풀로 반환된다.[clarification needed]
자원 풀링은 자원 획득과 관련된 높은 비용, 자원 요청의 높은 비율, 그리고 동시에 사용되는 자원의 전체적인 개수가 낮은 상황에서 응답 시간을 크게 증가시킬 수 있다.풀링은 또한 대기 시간이 문제가 될 때 유용하다. 풀은 이미 자원을 획득했기 때문에 자원을 획득하는 데 필요한 예측 가능한 시간을 제공하기 때문이다.이러한 이점은 시스템 호출을 필요로 하는 시스템 자원이나, 데이터베이스 연결, 소켓 연결, 스레드, 메모리 할당 등 네트워크 통신이 필요한 원격 자원에 대해서는 대부분 사실이다.풀링은 또한 계산 비용이 많이 드는 데이터, 특히 글꼴이나 비트맵과 같은 큰 그래픽 객체에도 유용하며, 기본적으로 데이터 캐시 또는 메모화 기법 역할을 한다.
풀의 특별한 경우로는 연결 풀, 스레드 풀, 메모리 풀 등이 있다.
개체 풀
풀은 또한 오브젝트에 사용될 수 있으며, 여기서 풀은 오브젝트 풀 패턴과 같이 오브젝트 지향 언어로 풀을 구현하기 위한 설계 패턴을 참조한다.이미 생성된 개체는 개체 생성에 필요한 메모리 할당을 피하지만 개체 자체는 외부 리소스를 보유하지 않고 메모리만 점유한다.오브젝트 풀은 오브젝트 생성 비용이 높을 때 유용하지만, 특정 상황에서는 이 단순한 오브젝트 풀링이 효율적이지 않을 수 있고 실제로 성능을 저하시킬 수 있다.[1]
참조
- ^ "Java theory and practice: Urban performance legends, revisited". ibm.com. 2005-09-27. Archived from the original on 2011-12-29. Retrieved 2013-10-31.