[14장] 불변 객체 성능 문제 #116
Answered
by
Irisation23
0sunset0
asked this question in
Chapter 13-14 (모델링, 리팩터링)
-
14장 리팩토링 코드 (+이전 장들 코드) 에는 클래스의 인스턴스 변수가 final로 선언되어 있습니다. class Customer{
final PurchasePoint consumptionPoint;
} 이렇게 하면 변경하고 싶을 때 매번 새로운 객체를 만들어내야 하는데, 그럼 버려지는 객체가 많이 생길 것 같습니다. |
Beta Was this translation helpful? Give feedback.
Answered by
Irisation23
Jul 27, 2024
Replies: 2 comments 1 reply
-
기본적으로 참조하지 않는 객체가 있다면 가비지 컬렉터가 일을 하지 않을까 하지만 많은 최적화 방법이 있지만 하나의 예로 들어본다면 public final class PurchasePoint {
private static final Map<Integer, PurchasePoint> CACHE = new HashMap<>();
private final int points;
private PurchasePoint(int points) {
this.points = points;
}
public static PurchasePoint of(int points) { // 값으로 들어온 객체가 이미 존재한다면 CACHE에서 반환, 없다면 새로운 객체 반환
return CACHE.computeIfAbsent(points, PurchasePoint::new);
}
public int getPoints() {
return points;
}
} |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
0sunset0
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
기본적으로 참조하지 않는 객체가 있다면 가비지 컬렉터가 일을 하지 않을까 하지만
가비지 컬렉터가 일을 제대로 하지못할 정도의 어떤 이슈가 발생한다면 최적화 방법을 고려할 수 있다고 생각합니다.
많은 최적화 방법이 있지만 하나의 예로 들어본다면
객체 풀링(Object Pooling)
방법을 사용해 볼 수 있을 것 같습니다.