본문 바로가기
자바

자바 - try-with-resources

by 개발자 포비 2024. 11. 28.

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

댓글