iOS/Swift
[TIL] COW(Copy on Write)
miniOS
2022. 1. 10. 18:58
COW(Copy On Write)는 말 그대로 "값을 기록할 때 복사가 일어난다"는 뜻이다.
찾아보니 Memory Management분야에서 Optimization기술 중 하나로 쓰이고 있다고 한다.
Swift에서도 Optimization기술로 쓰이고 있다.
COW는 CollectionType에서 적용이 된다.
CollectionType은 Struct로 구성되어있기 때문에 ValueType이다
아래는 두 변수를 따로 선언해 주었을 때 발생하는 메모리 상황이다.
let a = [1...30]
let b = [1...30]
ValueType에서는 대입연산자를 사용할 때 값복사가 일어난다.
하지만 COW가 적용됨으로 인해 메모리주소가 복사되는 현상이 발생한다.
let a = [1...30]
let b = a
읽기만 할 때에는 계속 같은 메모리주소를 참조하고 있다가, 쓰기를 할 시점에 기존 값을 복사한 뒤 복사본에 쓰기가 일어난다.
이렇게 해서, 같은 값을 읽기만 할 때에는 기존보다 스택공간을 아낄 수 있게 된다.