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