반응형
이 내용은 엘레강트 오브젝트
를 읽으면서 정리한 내용을 포함하고 있습니다.
- RAIL
- Java의 RAIL
- 정리
RAIL
- 리소스 획득은 초기화
- C++에 존재하는 매우 강력한 기법
- 가비지 컬렉션을 이용해서 객체를 제거하는 Java에서는 사라진 개념
핵심은 객체가 살아있는 동안에만 리소스를 확보하는 것이다.
Java의 RAIL
- 가비지 컬렉션
- 객체가 더 이상 사용되지 않을 때 객체를 제거하는 작업을 백그라운드로 진행
- 기술적으로 Java에서는 main() 메서드의 실행이 종료된 이후에도 객체 t가 계속 살아 있을 수 있다.
- main() 메서드가 종료된 후에는 더 이상 객체가 필요하지 않지만, Java는 객체를 즉시 파괴하지 않는다.
- 대신 객체가 오랜 시간 메소리에 머무를 수 있는데, 이런 객체를
가비지
라고 부른다. - 새로운 객체를 보관하는 데 필요한 메모리가 부족한 경우에만 가비지 컬렉터가 객체를 제거한다.
- RAIL과 유사한 Java7에서의 기능
- try-with-resources 기법 사용
int main() [
try (Text t = new Text("/tmp/text.txt")) {
t.content();
}
]
- 이 방법을 사용하기 위해서는 Text 클래스가 Closable 인터페이스를 구현하도록만 하면 된다.
정리
- 파일, 스트림, 데이터베이스 커넥션 등 실제 리소스를 사용하는 모든 곳에서 RAIL를 사용할 것을 적극 추천한다.
- Java에서는 AutoCloseable을 사용하면 된다.
반응형
'독서이야기 > 엘레강트 오브젝트 - 새로운 관점에서 바라본 객체지향' 카테고리의 다른 글
[엘레강트 오브젝트] 4.3 final이거나 abstract이거나 (0) | 2023.04.09 |
---|---|
[엘레강트 오브젝트] 4.2 체크 예외(checked exception)만 던지세요 (0) | 2023.04.09 |
[엘레강트 오브젝트] 4.1 절대 NULL을 반환하지 마세요 (0) | 2023.04.09 |
[엘레강트 오브젝트] 3.7 인스토스펙션과 캐스팅을 피하세요 (0) | 2023.03.22 |
[엘레강트 오브젝트] 3.6 부 ctor 밖에서는 new를 사용하지 마세요 (0) | 2023.03.22 |
댓글