Mutable Immutable
Mutable Immutable
Object의 type
- 자바를 포함한 대부분의 프로그래밍 언어에서 객체는 mutable / immutable 타입 중 하나
- Mutable 인지 immutable인지에 따라 값을 변경할 수 있는 지가 달라짐
Immutable Object
heap
영역에 저장된 값을 변경할 수 없는 객체- Boolean, String, Integer, Float, Long 등 primitive type의 wrapper class
- Immutable object를 가리키는
reference variable
을 업데이트하려면 새로운 객체를 만들어서 재 할당해야 함 - 실제로 immutable object의 값 자체는 변화하지 않음
- Atomic한 메소드를 만들 수 있고 동기화 처리가 별도로 필요없음
- 객체를 업데이트할 때 마다 새 객체가 필요하므로 추가 메모리 누수 및 성능 저하 발생 가능
- 업데이트되면서 사용되지 않는 객체는
GC
가 처리함
Mutable Object
heap
영역에 저장된 값을 변경 가능한 객체- List, ArrayList, HashMap, StringBuilder, Date 등
- 멀티스레드 환경에서 사용하려면 동기화 처리가 필요
References
- https://cantcoding.tistory.com/41
- https://choiblack.tistory.com/47