가 변 적 개체 설계

코드 품질 을 높이 기 위해 장 착 했 습 니 다.
4. 567915 의
플러그 인
Integer 대상 생 성에 대한 효율 적 인 문 제 를 찾 아 냈 습 니 다.
  P Bx: invokes inefficient new Integer(int) constructor; use Integer.valueOf(int) instead

그래서 Integer. valueOf (int) 가 어떤 최 적 화 를 했 는 지 살 펴 보 자.
public static Integer valueOf(int i) {
	final int offset = 128;
	if (i >= -128 && i <= 127) { // must cache 
	    return IntegerCache.cache[i + offset];
	}
        return new Integer(i);
}
private static class IntegerCache {
	private IntegerCache(){}

	static final Integer cache[] = new Integer[-(-128) + 127 + 1];

	static {
	    for(int i = 0; i < cache.length; i++)
		cache[i] = new Integer(i - 128);
	}
}

정수 만 들 었 구나. - 128 에서 127 캐 시!!
이 를 통 해 String, Integer... 등 가 변 대상 을 사용 할 때 스 레 드 안전 문 제 를 피 할 수 있 지만 성능 에 대한 수요 에 주의해 야 한 다 는 것 을 알 수 있다.
디자인 모드 의
4. 567915. 상기 문 제 를 해결 할 수 있 습 니 다!
필요 에 따라 변 하지 않 는 대상 을 만 들 고 이 대상 을 캐 시 합 니 다.

좋은 웹페이지 즐겨찾기