이펙티브 이펙티브 자바 8 Finalizer는 쓰지 말자. FinalizerExample Class SampleRunner Class 단점 1 실행결과에 항상 finalize가 호출되지 않는다. 즉, finalize의 호출 여부를 보장하지 않는다는 것이다. (GC의 대상이 되어도 즉시 수거해가지 않을 수 있다.) 단점 2 인스턴스 반납을 지연 시킬 수도 있다. Finalizer는 우선 순위가 낮아서 언제 실행할지 모른... 자바이펙티브이펙티브 이펙티브 자바 7 예시로 Java로 구현한 Stack의 코드를 살펴보자. size를 index로 사용하고 있다. 쌓여 있던 stack에 pop을 계속하여도 stack이 차지하는 메모리는 줄어들지 않는다. pop을 통해 스택을 꺼낸 뒤, 해당 자리를 null로 설정해 GC가 발생할 때, 메모리가 정리되도록 코드를 변경할 수 있다. 주의점 매번, 변수를 사용하고 null값으로 변경하는 번거로운 과정은 않다도 된다... 자바이펙티브이펙티브 이펙티브 자바 17 불변 클래스란 인스턴스 내부 값을 수정할 수 없는 클래스이다. 객체가 파괴되는 순간까지 절대 수정할 수 없다. (ex : String, BigInteger, BigDecimal) 이러한 불변 클래스들은 가변 클래스보다 설계하고 구현이 쉬우며, 훨씬 안전하다. 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. (기본적으로 final 선언) 모든 필드를 fina... 자바이펙티브이펙티브
이펙티브 자바 8 Finalizer는 쓰지 말자. FinalizerExample Class SampleRunner Class 단점 1 실행결과에 항상 finalize가 호출되지 않는다. 즉, finalize의 호출 여부를 보장하지 않는다는 것이다. (GC의 대상이 되어도 즉시 수거해가지 않을 수 있다.) 단점 2 인스턴스 반납을 지연 시킬 수도 있다. Finalizer는 우선 순위가 낮아서 언제 실행할지 모른... 자바이펙티브이펙티브 이펙티브 자바 7 예시로 Java로 구현한 Stack의 코드를 살펴보자. size를 index로 사용하고 있다. 쌓여 있던 stack에 pop을 계속하여도 stack이 차지하는 메모리는 줄어들지 않는다. pop을 통해 스택을 꺼낸 뒤, 해당 자리를 null로 설정해 GC가 발생할 때, 메모리가 정리되도록 코드를 변경할 수 있다. 주의점 매번, 변수를 사용하고 null값으로 변경하는 번거로운 과정은 않다도 된다... 자바이펙티브이펙티브 이펙티브 자바 17 불변 클래스란 인스턴스 내부 값을 수정할 수 없는 클래스이다. 객체가 파괴되는 순간까지 절대 수정할 수 없다. (ex : String, BigInteger, BigDecimal) 이러한 불변 클래스들은 가변 클래스보다 설계하고 구현이 쉬우며, 훨씬 안전하다. 객체의 상태를 변경하는 메서드를 제공하지 않는다. 클래스를 확장할 수 없도록 한다. (기본적으로 final 선언) 모든 필드를 fina... 자바이펙티브이펙티브