본문 바로가기

Java/effective-java

(2)
[Item 7] 다 쓴 객체 참조를 해제하라 [Item 7] 다 쓴 객체 참조를 해제하라 핵심요약 자바에서는 가비지컬렉터가 메모리 누수를 관리해준다. 그러나 몇몇 특수한 경우에는 사용자가 직접 메모리 누수를 관리해야 한다. 자바에서의 메모리 누수 원인들 스스로 메모리를 직접 관리하는 클래스 캐시 참조 리스너와 콜백 1. 클래스가 직접 메모리를 관리 하는 경우 // 코드 1 - 메모리 누수를 고려 안하고 구현한 스택 class Stack { public Object[] elements; protected int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 4; public Stack(){ elements = new Object[DEFAULT_INITIAL_CAPACITY]; } pub..
[item 5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라. [Item 5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 핵심요약 사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스나 싱글턴 방식이 적합하지 않다. 이럴 때는 의존 객체 주입 기법을 사용하자. 의존객체주입이란 필요한 인스턴스를 직접 생성하는 것이 아니고 외부에서 주입하여 객체 간 결합도를 줄이고 유연한 코드를 작성하게 하는 방법. // 코드 1 - 의존객체주입의 예 public class Computer { private Cpu cpu; public Computer(Cpu cpu) { this.cpu = cpu; } }부적절한 클래스 예시 // 코드 2 - 정적 유틸리티를 잘못 사용한 예 public class SpellChecker { private static fina..