Java에서의 캐시에 관한 공부를 하다 알게된 사실이다.
java.lang 패키지의 Integer 클래스는 primitive 타입인 int의 Wrapper 클래스로 알려져 있다.
Integer 클래스는 내부적으로 IntegerCache 라는 static class 를 가진다.
이에 대한 Java docs 를 보면 자주 쓰이는 -128 ~ 127의 값을 항상 캐싱한다는 것을 알 수 있다.
또한 AutoBoxCacheMax 옵션을 통해 이 범위를 조정할 수 있다.
Integer 클래스의 정적 팩토리 메서드인 valueOf 메서드를 보자
전달된 i 가 캐싱된 숫자의 범위내에 있다면, 객체를 새로 생성하지 않고 '미리 생성된' 객체를 반환한다. 그렇지 않을 경우에만 new 키워드를 사용하여 객체를 생성하는 것을 확인할 수 있다.
확인을 직접해보니 Boolean, Float, Double 형 빼고 정수형 Wrapper 클래스들은 각자의 Cache 클래스가 있다.
캐시에 대해 공부하다가 자바 기본형의 Wrapper 클래스도 내부적으로 이런 캐시를 사용하는지 알게 되었다.
캐시에 대해 더 공부해야겠다.
22.09.26 추가.
캐시에 대하여.
https://dont-be-evil.tistory.com/301
어떤 부분에서의 캐시든 모두 다시 사용될 확률이 높은 것은 더 빠르게 접근 할 수 있게 하여 성능을 높이는데 목적이 있다.
꾸준히 다시보자.
1. 220919
2. 220928
3. 221007
4. 221101
'새롭게 쌓은 지식' 카테고리의 다른 글
캐시에 대하여 (0) | 2022.09.26 |
---|---|
Java Wrapper 클래스는 불변객체이다. (1) | 2022.09.21 |
Spring ArgumentResolver와 Interceptor (1) | 2022.09.14 |
여러 프로그래밍 팁 (0) | 2022.09.10 |
Java 제네릭 super, extends, ? (0) | 2022.09.09 |