JavaStudy

ITEM5 : 필요없는 오브젝트가 생성되는것을 피해라

  • Immutable 객체는 항상 재사용이 가능함!!

      String s = new String("abc"); // 매번 새로운 객체 생성
      String s = "abc"; // "abc" 스트링 풀에서 공수
    
      Boolean.valueOf(String); // 새로운 인스턴스를 생성하지 않지만
      new Boolean(String) // 생성자는 새로운 인스턴스를 생성
      // Static 팩토리를 사용하는것이 좋다.
    
  • 가변 객체도 객체의 상태가 변경되지 않는다면 static{ } 블락에서 초기화 한후 재사용하자.자주 호출되는 함수에서 매번 객체를 생성하는 일은 하지 않는게 좋다.
  • immutable object 는 매번 인스턴스를 만들지 말고 static 블록에서 초기화한후 공유해서 사용해야 한다.
  • Map 에 keySet 함수도 매번 새로운 Set를 만들어서 리턴하지 않고 매번 같은 인스턴스를 리턴함.
  • java 1.5 이상에서 제공하는 autoboxing 이 일어나지 않도록 해라 Long 과 primitive long 간에 boxing 이 일어나면 추가적인 오버헤드가 발생한다.
      public static void main(String[] args) {
        Long sum =0L;
        for (1ong i = 0; < Integer.MAX_VALUE; i++) {
          sum += 1; // autoboxing 일어남.
          System.out.println(sum);
        }
      }