불변 객체란 무엇인가요?

  • 불변 객체란 말 그대로 변하지 않는 객체, 자신의 값이 한 번 지정되면 변경할 수 없는 객체를 말한다.

  • 불변 객체의 값을 변경하려면 새로운 객체 인스턴스를 만들어야 하는데, 이것은 사실 변경하는 것이 아니라 새로운 불변 객체를 또 생성하는 것이다.

  • 대표적인 불변 객체로는 String, Integer, Double, Character 등이 있다.

불변 객체 장단점

[장점]

  • 쓰레드 안전성

    • 불변 객체는 내부 상태가 변경되지 않기 때문에 동시에 여러 쓰레드에서 사용해도 안전하다.

    • 동기화의 필요성이 없어져서 코드를 단순화하고 성능을 향상시킬 수 있다.

  • 캐싱

    • 불변 객체는 한 번 생성되면 재사용할 수 있다.

    • 자주 사용되는 객체를 캐싱하여 메모리와 성능을 절약할 수 있다.

  • 보안성

    • 불변 객체는 변경할 수 없기 때문에 외부에서 조작될 위험이 줄어든다.

[단점]

  • 성능 저하

    • 불변 객체는 변경이 불가능하기 때문에 새로운 객체를 생성해야 할 때마다 메모리에 새로운 객체를 할당해야 한다.

    • 불변 객체의 크기가 큰 경우 불변 객체를 생성하는 비용이 커질 수 있다.

    • 이로 인해 메모리 사용량이 더 많아질 수 있어 성능 저하가 발생할 수 있다.

  • 유연성 제한

    • 불변 객체는 변경이 불가능하기 때문에 객체의 상태를 변경할 수 없다.

    • 객체의 상태를 자주 변경해야 한다면 불변 객체를 사용하는 것이 더 복잡할 수 있다.

Last updated