Java의 자원 관리: try-with-resources
Java에서는 자바 가상 머신(JVM)이 자동으로 메모리와 자원을 관리하기 위해 가비지 컬렉터(GC)를 사용합니다. 그러나 파일 입출력(IO)과 같은 외부 자원은 개발자가 직접 관리해야 하며, 이를 위해 전통적으로 try-catch-finally 구조를 사용해왔습니다. 하지만 이 구조는 가독성이 떨어지고, 여러 자원을 동시에 사용할 경우 중첩되어 복잡한 코드가 될 수 있는 단점이 있습니다.
문제점
가독성 저하: try-catch-finally 구조는 코드가 복잡해져 가독성이 떨어짐.
리소스 관리의 복잡성: 여러 자원을 동시에 사용할 경우 중첩된 try 문이 필요함.
해결책: try-with-resources
Java 7부터 도입된 try-with-resources 문법은 Closeable 인터페이스를 구현한 객체에 대해 자동으로 close() 메서드를 호출하여 자원을 관리합니다. 이를 통해 코드의 명확성을 높이고, 자원 해제 함수 호출을 누락하는 문제를 방지할 수 있습니다.
// try-with-resources 를 사용하여 편리하게 자원을 사용하는 모습
try(InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst)) {
// .. TODO
}catch(IOException e){
e.printStackTrace();
}
// 빠져나오면서 in과 out에 대한 close() 메서드가 호출될 것이다.
- 자동 자원 해제: try 블록을 빠져나가면 in과 out 객체의 close() 메서드가 자동으로 호출됨.
장점
1. 코드의 명확성: 자원 사용 및 해제가 명확하게 표현됨.
2. 안전한 자원 관리: 예외 발생 시에도 자원이 안전하게 해제됨.
3. 간편한 사용: 여러 자원을 동시에 관리할 수 있는 간결한 문법 제공.
따라서, Java에서 자원을 사용할 때는 try-with-resources를 사용하는 것이 좋습니다.
'자바' 카테고리의 다른 글
자바 - 잘 기억 안나던 컬렉션 기능 정리 (0) | 2025.01.15 |
---|---|
자바 - 스트림 (2) | 2024.12.09 |
자바 - 객체 참조와 메모리 누수 (0) | 2024.11.27 |
자바 - 불필요한 객체 생성 (0) | 2024.11.26 |
자바 - 의존성 주입 (0) | 2024.11.26 |
댓글