2010-07-24 5 views
4

개체 풀과 연결 풀의 정확한 차이점은 무엇입니까? 메모리 활용에 대한 알고리즘에 어떤 차이가 있습니까? msdn에서 "개체 풀링을 사용하면 최대 연결 수를 제어하는 ​​연결 풀링과 달리 사용하는 연결 수를 제어 할 수 있습니다." 정확히 무슨 뜻입니까?개체 풀 대 연결 풀

위의 설명을 도와주세요.

+0

어떤 플랫폼입니까? 어떤 언어? – Oded

답변

3

연결 풀은 연결 개체가 포함 된 개체 풀입니다.

"개체 풀링을 사용하면 도달 한 최대 수를 제어하는 ​​연결 풀링과 달리 사용하는 연결 수를 제어 할 수 있습니다."

개체 풀을 사용하면 응용 프로그램에서 한 번에 사용중인 인스턴스 수를 제한 할 수 있습니다. 응용 프로그램이 제한보다 많은 인스턴스를 필요로하는 경우, 객체 풀은 해당 문제를 처리하는 방법을 결정해야합니다. 가능한 전략은 여러 가지가있을 수 있습니다

  • 는 null
  • 던져 예외 인스턴스까지
  • 블록이
  • 이 연결 풀은 풀

의 크기를 늘릴 수 있습니다 객체 풀이므로 정확히 동일한 결정을 내립니다.

개체 풀 (또는 연결 풀)의 특정 구현은 이러한 전략 중 하나 또는 여러 가지 조합을 사용할 수 있습니다.

특정 구현에 대해 언급하지 않는 한 내 의견으로는 인용문이 오해의 소지가 있습니다.

간단한 오브젝트 풀 예

풀은 일부 구성 매개 변수가 있습니다. 단순한 풀은 minimum_size와 maximum_size를 가질 수 있습니다. 풀을 처음 사용할 수있게되면 minimum_size 개체가 포함됩니다. 클라이언트가 이러한 객체를 요청할 때 풀에는 할당되지 않은 객체가 거의 포함되지 않습니다. 이 번호는 클라이언트가 개체를 풀에 반환 할 때도 증가 할 수 있습니다.

어떤 시점에서 풀은 할당되지 않은 객체가없는 상태에 도달 할 수 있지만 하나 이상의 클라이언트가 객체를 요청할 수 있습니다. 이 시점에서 풀이 maximum_size에 도달하지 않는 한, 새로운 개체를 만들어 풀에 추가 할 수 있습니다. 이제 클라이언트에 객체를 반환 할 수 있습니다.

풀이 maximum_size에 도달하면 풀 크기를 늘릴 수 없기 때문에 다른 방식으로 클라이언트를 처리해야합니다. 즉, ObjectPoolExhausted 예외가 발생한다고 가정 해 봅시다.

잠시 후 일부 클라이언트는 개체를 풀로 반환하고 개체가 다시 없어 질 때까지 계속 수행 할 수 있습니다. 위로 질문에

은 MSDN 문서는 특정 오브젝트 풀 구현은 지정된 최대까지 풀의 크기를 증가 할 것으로 말하고있다.최대치에 도달하면 위의 예제와 달리 예외를 throw하는 대신 클라이언트가 객체가 풀로 반환 될 때까지 기다린 다음 새로 반환 된 객체를 대기중인 클라이언트에 제공합니다.

MSDN 기사에서는 특정 연결 풀 구현에 최대 크기 매개 변수가 없다고 말합니다. 요구 사항을 충족시키기 위해 새로운 연결을 계속 생성합니다. 결국 일부 시스템 제한이 발생하고 요청이 어떤 식 으로든 실패합니다. t 지정).

+0

답장을 보내 주셔서 감사합니다. Richj.I msnn의 또 다른 성명서에서 "연결 풀링을 사용할 때 같은 스레드에 생성되므로 수영장에 아무것도 없으면 연결이 생성됩니다. 개체 풀링을 사용하면 풀은 새로운 객체를 생성 할 수 있지만 이미 최대 값에 도달했다면 다음으로 사용할 수있는 객체를 제공합니다. 이것은 객체를 만드는 데 오랜 시간이 걸리지 만 매우 유용하지는 않습니다. 오래. "Richj 당신이 이것을 구현 한 적이 있다면 그들이 얼마나 다른지 말해 줄 수 있습니까? – Ritu

+0

안녕하세요. MSDN 문서에 대한 링크를 게시하십시오. 특정 구현에 대해 이야기하고 있다고 생각합니다. 이러한 문은 일반적인 경우 개체 및 연결 풀에 적용될 때 올바르지 않습니다. – richj

+0

답장을 보내 주셔서 감사합니다. MSDN 링크는 http://msdn.microsoft.com/en-us/library/ff7105zk%28VS.80%29.aspx – Ritu