반응형 try-with-resources2 Item9 try-finally보다는 try-with-resources를 사용하라 자바 라이브러리에는 `close`메서드를 호출해 직접 닫아줘야 하는 자원이 많다 ex) `InputStream`, `OutputStream`, `java.sql.Connection` 자원을 닫는 것은 클라이언트가 놓치기 쉬워서 예측할 수 없는 성능 문제로 이어지기도 한다. 전통적으로 자원이 제대로 닫힘을 보장하는 수단으로 try-finally가 쓰였다. try-finally public static String firstLineOfFile(String path) throw IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } }.. 2023. 2. 2. Item8 finalizer와 cleaner 사용을 피하라 자바는 두 가지 객체 소멸자를 제공 `finalizer` finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요 오동작, 낮은 성능, 이식성 문제의 원인이 되기도 함 자바 9에서는 finalizer를 deprecated API로 지정 기본적으로 `쓰지 말아야`한다 `cleaner` finalizer보다 덜 위험하다 예측할 수 없다 (언제 실행되는지) 느리고, 일반적으로 불필요 `finalizer와 cleaner의 문제점 불확실성 (수행 보장 X) 자바에서는 접근할 수 없게 된 객체를 회수하는 역할을 GC가 담당 finalizer나 cleaner를 수행할지는 적적으로 `GC 알고리즘`에 달렸고, 구현마다 천차만별 객체에 접근할 수 없게 된 후 finalizer나 cleaner가.. 2023. 1. 15. 이전 1 다음 반응형