작업이 Java로 완료된 후에 데이터베이스에서 연결을 해제해야합니까? 연결이 끊어지지 않으면 메모리 누수가 발생합니까?Java를 사용할 때 명시 적으로 데이터베이스와의 연결을 끊어야합니까?
답변
사용중인 프레임 워크와 같은 세부 정보를 제공해야합니다.
어쨌든 JDBC를 사용하고 있습니까? 그렇다면 각각의 close()
메서드를 사용하여 Statement, ResultSet 및 Connection을 사용하여 다음 개체를 닫아야합니다.
항상 모든 연결, 문 및 결과 집합을 닫아야합니다.
그렇지 않은 경우 메모리 누수보다 풀에서 새 연결을 확보 할 가능성이 더 높습니다.
소스가 없지만 JDBC 드라이버 구현에 따라 달라 지므로 당연한 것으로 생각합니다. 연결을 닫고 모든 JDBC 드라이버가 사용자를 대신 해줄 수는 없으므로 스스로 해결해야합니다 (일부는 가능할 지 모르지만).
이것은 내가 따르기를 좋아하는 규칙으로 돌아갑니다. - 뭔가를 만들거나 열면, 나는 그것을 삭제하거나 닫을 책임이 있습니다.
JDBC를 사용한다고 가정하면 대답은 '예'입니다. 연결을 닫지 않으면 JDBC 드라이버가 finallizer에서 닫으려고 시도 할 수 있지만 매우 오랜 시간 동안 연결을 열어 리소스 문제를 일으킬 수 있습니다 (하나의 연결에서 데이터베이스 연결이 허용됨) 시간은 유한하다). 일반적으로 JDBC 프로그래밍은 데이터베이스 풀을 사용하여 수행되며 연결을 닫지 않으면 풀에서 사용 가능한 연결이 매우 빨리 소모됩니다.
일부 응용 프로그램 서버 (예 : JBoss)는 연결이 닫히지 않았을 때이를 감지하고 트랜잭션을 관리하는 경우이를 닫습니다. 그러나 이에 의존해서는 안됩니다.
물론 일부 JDBC 드라이버는 순수한 자바 드라이버가 아니며, 그 시점에서 메모리 누출이 매우 실제적인 가능성이 있습니다.
예 및 예
- 1. HTTPService를 사용할 때 HTTP 연결을 끊거나 연결을 끊어야합니까?
- 2. sharepoint와의 연결을 끊어야합니까? 그렇다면 어떻게?
- 3. proxool을 사용할 때 모든 getConnection()을 명시 적으로 닫아야합니까?
- 4. SqlInstanceStore를 사용할 때 지속성 및 언로드 설정을 명시 적으로 구성해야합니까?
- 5. OnActionExecuting에서 명시 적으로 설정할 때 ViewModel이 null입니다.
- 6. android에서 원격 데이터베이스와의 연결을 설정하는 방법은 무엇입니까?
- 7. 응답 헤더가없는 서버에서 HTTP 연결을 명시 적으로 종료하는 방법
- 8. AppEngine '명시 적으로 취소됨'오류
- 9. C++ 명시 적으로 생성자와
- 10. 명시 적으로 소멸자를 호출해야합니다.
- 11. 명시 적으로 스레드를 완료하여
- 12. 명시 적으로 SVN
- 13. 어떻게 명시 적으로 ItemsCollection.Filter를 호출합니까?
- 14. Close가 명시 적으로 호출되지 않았습니다.
- 15. setResult를 RESULT_CANCELED로 명시 적으로 설정해야합니까?
- 16. applicationname = "/"명시 적으로 지정 했더라도?
- 17. routes.rb 명시 적으로 템플릿을 선택하십시오.
- 18. 메서드의 docstring을 명시 적으로 설정합니다.
- 19. document.domain이 명시 적으로 설정되었는지 테스트
- 20. auto_ptr 초기화를 명시 적으로 제로화해야합니까?
- 21. 어셈블리를 명시 적으로 지정 하시겠습니까?
- 22. const 멤버는 명시 적으로 초기화하지만
- 23. 명시 적으로 항목을 구조체에 저장합니다.
- 24. Android : 데이터베이스와의 보안 연결
- 25. 인터페이스 멤버를 명시 적으로 또는 암시 적으로 구현해야합니까?
- 26. 명시 적으로 조인에 대한 해시 힌트 언급
- 27. 컴파일 할 때 속성에 명시 적으로 타이핑해야하는 이유는 무엇입니까?
- 28. 업데이트를 수행 할 때 명시 적으로 커밋해야하는 이유는 무엇입니까?
- 29. 페이지가 동적으로 열릴 때 스크립트를 명시 적으로 실행할 수 있습니까?
- 30. 명시 적으로 인터페이스를 구현할 때 Visual Studio 코드가 생성되었습니다.