본문 바로가기

Java 메모리 누수(memory leak) obsolete reference(쓸모 없어진 참조), unintentional object retention(의도하지 않은 객체 보유) 더 이상 쓰일 일 없는 객체를 garbage collection 하지 못하는 오류 코드 예제 class MyStack { private static final int MAX_SIZE = 16; private final E[] elements; private int position = 0; public MyStack() { elements = (E[]) new Object[MAX_SIZE]; } public void push(E e) { if(position == MAX_SIZE) throw new IllegalStateException("Full Stack"); ele.. 더보기
Singleton pattern 원소가 하나인 enum 자료형이 가장 좋은 singleton 구현방법이다. 왜? 리플렉션의 prive 생성자 접근을 통한 공격(추가 객체 생성)에 안전하다. Serializable 구현시 deserialize 될 때 마다 새로운 객체가 생성되는 일이 없다. (이를 방지하기 위해 readResolve 메소드를 추가할 필요 없다.) 코드가 간단한다. 코드 public enum MySingleton { INSTANCE; publc someMothods() { ... } } 출처 : Effective Java 2판, 규칙3. Singleton pattern 더보기
Builder Pattern 사용 예 생성자 또는 정적 펙토리 메소드의 인자가 많고, 인자들 중 선택항목이 많은 경우, Builder 패턴의 적용을 생각해 볼 수 있음 NutritionFacts nutrition = new NutritionFacts.Builder(9) .setB(8) .setC(7) .build(); 코드 public class NutritionFacts { private int necessaryA; // immutable object private int optionalB; private int optionalC; // builder inner class public static class Builder { private int a = 0; // 기본값 초기화 private int b = 0; private in.. 더보기