JerryiOS 2023. 5. 18. 21:34

Q. ARC, MRC๋ž€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

A.

1.
ARC๋Š” ์ž๋™์œผ๋กœ HeapObject์•ˆ์— ๋“ค์–ด์žˆ๋Š” Reference Count๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
-> Java์˜ Garbage Collector์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ปดํŒŒ์ผ ์‹œ์ ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

2.
MRC๋Š” ์ˆ˜๋™์œผ๋กœ Reference Count๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
Retain, release ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. Objective-C ์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

cf)

- ๋™์  ํ• ๋‹น์œผ๋กœ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น ์ •๋ณด๋Š” HeapObject๋ผ๋Š” struct๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

- HeapObject์—๋Š” ๋™์  ํ• ๋‹น๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ. ์ฆ‰, reference count์™€ type meta data๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

Q. ARC๋Š” compile time์— ์‹คํ–‰๋˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋™์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ๋“ค์˜ reference count๋ฅผ ์„ธ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

A.

1.
ARC๋Š” compile time์— ์ž๋™์œผ๋กœ retain๊ณผ release ์ฝ”๋“œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•ด์ค๋‹ˆ๋‹ค.
MRC์—์„œ ์ˆ˜๋™์œผ๋กœ ์ž‘์„ฑํ•˜๋˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

2.
Run time์— ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋‹ค๊ฐ€ retain/release์— ์˜ํ•ด count๊ฐ€ 0๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

 

Q. ARC์™€ GC๋Š” ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ๋‚˜์š”?

A.

1.
ARC๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ์‹คํ–‰๋˜๊ณ , GC๋Š” ๋Ÿฐํƒ€์ž„์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

2.
์ด์— ๋”ฐ๋ผ ARC๋Š” ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ–์ง€๋งŒ, ์•ฑ ์‹คํ–‰ ์ค‘ ์ˆœํ™˜์ฐธ์กฐ ๋ฐœ์ƒ ์‹œ ๋งค์šฐ ์น˜๋ช…์ ์ด๋ผ๋Š” ๋‹จ์ ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

3.
GC๋Š” ๋Ÿฐํƒ€์ž„์— ์ฐธ์กฐ๋ฅผ ๊ณ„์† ์ถ”์ ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ–์ง€๋งŒ,
ARC์— ๋น„ํ•ด ์น˜๋ช…์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ง‰์„ ํ™•๋ฅ ์ด ๋†’๋‹ค๋Š” ์žฅ์ ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

 

Q. ARC๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

A.

1.
ARC์˜ ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ ์ปดํŒŒ์ผ ํƒ€์ž„์— reference counting์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

2.
GC๋Š” ๋Ÿฐํƒ€์ž„์— Mark-and-Sweep ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ˆœํ™˜์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- Mark: ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ์‚ฌ์šฉ์ค‘์ธ ๊ฐ์ฒด ํ‘œ์‹œ
- Seep: ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ

 


Ref

https://velog.io/@heyksw/iOS-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84-ksl8uxwf#7-arc--mrc--gc

๋ฐ˜์‘ํ˜•