Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- kodility
- flutter firestore
- UWP
- Kotlin
- C/C++
- android architecture component
- livedata
- Java
- 안드로이드 구글맵
- C++
- Django REST
- Django REST Android
- android push
- 알고리즘
- RxAndroid
- 코틀린
- C
- 안드로이드
- Rxjava2
- 프로그래머스
- Android
- Flutter TextField
- RxJava
- dart
- NDK
- Python
- FLUTTER
- Django REST framework
- mfc
- Android P
Archives
- Today
- Total
개발하는 두더지
[Effective Java 규칙7] 종료자 사용을 피해라 본문
[Effective Java 규칙7] 종료자 사용을 피해라
Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.
책에 따르면 종료자는 예측 불가능하며, 대체로 위험하고, 일반적으로 불필요하다
자바에서의 종료자는 C++ 소멸자와는 다르다
C++에서 소멸자는 메모리 이외의 자원을 반환하는데도 사용되는데 자바에서는 보통 try finally 블록이 그런 용도로 쓴다
자바에서 어떤 객체에 대한 모든 참조가 사라지고 나서 종료자가 실행되기까지는 긴 시간이 걸릴 수 있으므로 긴급한 작업을 종료자 안에서 처리하면 안된다
예를들어, 종료자 안에서 파일을 닫는 행위는 치명적이다. 파일 디스크립터는 유한한 자원이기 때문이다
JVM은 종료자를 천천히 실행하므로 열린 상태의 파일이 많이 남아있을 수 있다. 이런 상황에서 새로운 파일을 열려고 하면, 한번에 열 수 있는 파일의 개수에 제한이 있으므로 오류가 발생한다.
종료자 실행시점은 GC 알고리즘에 좌우되는데, 이 알고리즘은 JVM에 따라 다르다.
'Java,Android' 카테고리의 다른 글
[Effective Java 규칙8] equals를 재정의할 때는 일반 규약을 따르라 (0) | 2018.09.14 |
---|---|
Effective Java로 Java를 효과적으로 사용해보자 (0) | 2018.09.04 |
[Effective Java 규칙6] 유효기간이 지난 객체 참조는 폐기해야 한다 (0) | 2018.09.04 |
[Effective Java 규칙4] 불필요한 객체는 만들지 말자 (0) | 2018.09.04 |
[Effective Java 규칙3] private 생성자나 enum 자료형은 싱글턴 패턴으로 설계 (0) | 2018.09.04 |
Comments