2015-01-14 2 views
1

Http Components tutorial에 따르면 자원을 할당 해제하려면 CloseableHttpClientclose()이어야합니다.CloseableHttpClient를 닫음으로써 어떤 자원을 사용할 수 있습니까?

제 경우에는 응용 프로그램이 시작될 때 단순히 클라이언트를 만들고 응용 프로그램이 끝날 때 닫는 것이 좋습니다. 이렇게하면 클라이언트를 사용하는 기존 작업이 완료되고 새 작업이 아직 활성화되지 않았 음을 보장하는 데 필요한 심하게 동기화 된 코드가 단순화됩니다.

CloseableHttpClient 개체를 닫지 않고 한 번에 며칠 동안 떠날 경우. 나는 어떤 자원을 먹을 것인가?

+0

그냥 짐작할 만하지만 링크에서 "응답 콘텐츠 캐싱과 같은 기능"및 "연결된 연결 관리자를 종료해야합니다"라고 말하면 두 가지 종류의 리소스가 해제되어야 함을 나타냅니다. 그러나 실제로 HttpClient의 구현에 의해 할당되고 보유되는 리소스는 대부분 구현 자체의 재량에 달려 있습니다. – JimmyB

+1

Linux 시스템에서 실행하면 CLOSE_WAIT 상태와 배기 설명 자 (열려있는 파일이 너무 많음)에서 많은 연결을 남길 수 있습니다. –

답변

1

이것은 CloseableHttpClient 인스턴스에 따라 다릅니다. 일반적으로 CloseableHttpClient#close은 기본 연결 풀이 종료되고 지속 된 연결이 모두 닫혀 있는지 확인합니다. 영구 저장소에 바인드 된 CloseableHttpClient 인스턴스를 캐시하면 캐시 내용도 정리할 수 있습니다.

관련 문제