불변 객체란 무엇인가요?
불변 객체란 말 그대로 변하지 않는 객체, 자신의 값이 한 번 지정되면 변경할 수 없는 객체를 말한다.
불변 객체의 값을 변경하려면 새로운 객체 인스턴스를 만들어야 하는데, 이것은 사실 변경하는 것이 아니라 새로운 불변 객체를 또 생성하는 것이다.
대표적인 불변 객체로는
String,Integer,Double,Character등이 있다.
불변 객체 장단점
[장점]
쓰레드 안전성
불변 객체는 내부 상태가 변경되지 않기 때문에 동시에 여러 쓰레드에서 사용해도 안전하다.
동기화의 필요성이 없어져서 코드를 단순화하고 성능을 향상시킬 수 있다.
캐싱
불변 객체는 한 번 생성되면 재사용할 수 있다.
자주 사용되는 객체를 캐싱하여 메모리와 성능을 절약할 수 있다.
보안성
불변 객체는 변경할 수 없기 때문에 외부에서 조작될 위험이 줄어든다.
[단점]
성능 저하
불변 객체는 변경이 불가능하기 때문에 새로운 객체를 생성해야 할 때마다 메모리에 새로운 객체를 할당해야 한다.
불변 객체의 크기가 큰 경우 불변 객체를 생성하는 비용이 커질 수 있다.
이로 인해 메모리 사용량이 더 많아질 수 있어 성능 저하가 발생할 수 있다.
유연성 제한
불변 객체는 변경이 불가능하기 때문에 객체의 상태를 변경할 수 없다.
객체의 상태를 자주 변경해야 한다면 불변 객체를 사용하는 것이 더 복잡할 수 있다.
Last updated