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]

출처 : https://nsios.tistory.com/56

ValueType에서는 대입연산자를 사용할 때 값복사가 일어난다.

하지만 COW가 적용됨으로 인해 메모리주소가 복사되는 현상이 발생한다.

let a = [1...30]
let b = a

출처 : https://nsios.tistory.com/56

읽기만 할 때에는 계속 같은 메모리주소를 참조하고 있다가, 쓰기를 할 시점에 기존 값을 복사한 뒤 복사본에 쓰기가 일어난다.

이렇게 해서, 같은 값을 읽기만 할 때에는 기존보다 스택공간을 아낄 수 있게 된다.