YagomCareerStarterCamp-6 / Interview-study-in-swift

1 stars 0 forks source link

[2주차] Q3_Copy On Write는 어떤 방식으로 동작하는지 설명하시오. #6

Open ZZBAE opened 1 year ago

kiwi1023 commented 1 year ago

프로그래밍에서 복사 동작을 할 때, 실제 원본이나 복사본이 수정되기 전까지는 복사를 하지 않고 원본 리소스를 공유했다가, 원본이나 복사본에서 수정이 일어날 경우, 그때 복사 작업을 하는 것입니다.

이 방식을 사용하는 이유는 복사는 했으나, 수정을 진행하지 않는 경우 불필요한 메모리의 낭비를 방지하기 위해서 입니다.

Groot-94 commented 1 year ago

값타입을 사용하다가 컬렉션이나 큰 값들을 복사할 때 실제로 그 값이 바뀌기 전에는 참조해서 사용하다가, 복사한 값을 변경해야 하는 시점에 실제로 복사가 된다.

Judy-999 commented 1 year ago

Array, Dictionary 또는 String과 같은 collection은 복사의 성능 비용을 줄이기 위해 최적화를 사용합니다. 즉시 복사를 하는 대신에 original 인스턴스와 복사되는 인스턴스 사이에 저장되는 메모리를 공유합니다.(해당 메모리는 참조하는 형태가 됨) 이후 복사본 중에 변경이 발생하면 수정 직전에 비로소 복사가 됩니다. 코드에서는 항상 즉시 복사된 것 처럼 보이게 합니다.